Hallo Robert,
Zitat von
robroy85:
Ich habe sie als procedure hinzugefügt, jedoch ist sie doch vom Output gleich wie getdate "nur" das die Zeitzone und Winter/Sommerzeit berücksichtigt wird.
Ist doch genau die Zeit, die du brauchst. Werfe den ersten Entwurf weg und nimm die hier - die hat einen Ausgabeparameter:
SQL-Code:
IF EXISTS (
SELECT name FROM sysobjects
WHERE name = 'GetUTCDate' AND type = 'P'
) DROP PROCEDURE GetUTCDate
CREATE PROCEDURE GetUTCDate
@utc DATETIME OUTPUT
AS
BEGIN
DECLARE @BiasInMinutes INT
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',
'SYSTEM\CurrentControlSet\Control\TimeZoneInformation',
'ActiveTimeBias',
@BiasInMinutes OUTPUT
SELECT @utc = DATEADD(MINUTE, @BiasInMinutes, GetDate())
END
Zitat von
robroy85:
Leider habe ich das mit dem gebrochenen anteil * 60*60*24 nicht verstanden!
Vergiss den gebrochenen Anteil - Denkfehler von mir - war schon beim Einkaufen...
Zitat von
robroy85:
Wie konvertiere ich den das datetime-format in einen integerwert?
Vergiss das auch wieder, du hast in
MSSQL 7 noch keinen Datentyp BigInt. So hast du schon mal die UTC-Zeit in Sekunden:
SQL-Code:
DECLARE @utc DATETIME
DECLARE @seconds FLOAT
EXEC getutcdate @utc OUTPUT
SELECT @seconds = CONVERT(FLOAT, @utc) * 86400
Jetzt fehlt nur noch die Schleife, die aus dem Float-Wert einen Hex-String macht, aber das kriegen wir auch noch hin.
marabu