Overblog Folge diesem Blog
Edit post Administration Create my blog
Blog von Olaf Helper

GetDate() und SysDateTime()

9. Februar 2009 , Geschrieben von Olaf Helper Veröffentlicht in #T-SQL

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 


 

Diesen Post teilen

Repost 0
Um über die neuesten Artikel informiert zu werden, abonnieren:

Kommentiere diesen Post