GetDate() und SysDateTime()
Mit dem MS SQL Server 2008 wurden genauere Datumstypen eingeführt, mit denen es möglich ist, auch Daten vor 1753 oder Uhrzeiten mit einer genaueren Auflösung als 10/3 Millisekunden zu speichern.
Die Funktion GetDate liefert unverändert einen datetime-Wert. Genauere Timestamps hingegen liefert einem die neue Funktion SysDateTime() mit einem datetime2(7)-Wert. Die Auflösung ist aber abhängig vom eingesetzten Rechner und insbesondere vom Windows-Betriebs-System. Unter einem Windows-Server kann man bis zu 1/10 Mikrosekunden erhalten; auf meinem Vista-Home Rechner sind es gerade mal 1 Millisekunden; auch nicht besser als GetDate().
Richtig vertrauenserweckend finde ich die Ergebnisse aber auch nicht ….ist alles halt kein RealTime System....
SET NOCOUNT ON;
CREATE TABLE ##Datum
(Datum1 datetime2(7) NOT NULL DEFAULT GetDate(),
Datum2 datetime2(7) NOT NULL DEFAULT SYSDATETIME()); GO INSERT ##Datum DEFAULT Values; WAITFOR DELAY '00:00:00.123';
INSERT ##Datum DEFAULT Values; WAITFOR DELAY '00:00:00.123';
INSERT ##Datum DEFAULT Values; WAITFOR DELAY '00:00:00.123';
INSERT ##Datum DEFAULT Values; WAITFOR DELAY '00:00:00.123';
GO SELECT *
FROM ##Datum;
DROP TABLE ##Datum;
Ergebnis:
Datum1 Datum2
--------------------------- --------------------------
2009-02-09 12:04:29.8100000 2009-02-09 12:04:29.8105091
2009-02-09 12:04:29.9330000 2009-02-09 12:04:29.9355091
2009-02-09 12:04:30.0600000 2009-02-09 12:04:30.0605091
2009-02-09 12:04:30.1830000 2009-02-09 12:04:30.1855091