Brug DATETIME2
, en ny datatype i SQL Server 2008, der understøtter fraktioneret præcision:
VÆLG KONVERTER(DATETIME2(0),SYSDATETIME()) [åååå-mm-dd tt:mm:ss], KONVERTER(DATETIME2(1),SYSDATETIME()) [åååå-mm-dd tt:mm:ss.f], KONVERTER(DATETIME2(2),SYSDATETIME()) [åååå-mm-dd tt:mm:ss.ff], KONVERTER(DATETIME2(3),SYSDATETIME()) [åååå-mm-dd tt:mm:ss.fff], KONVERTER(DATETIME2(4),SYSDATETIME()) [åååå-mm-dd tt:mm:ss.ffff], KONVERTER(DATETIME2(5),SYSDATETIME()) [åååå-mm -dd tt:mm:ss.ffffff], KONVERTER(DATETIME2(6),SYSDATETIME()) [åååå-mm-dd tt:mm:ss.ffffff], KONVERTER(DATETIME2(7),SYSDATETIME()) [åååå -mm-dd tt:mm:ss.fffffff]
Omregningen afrundes til nærmeste enhed, f.eks.:
2014-09-04 09:35:47.0162993 som DATETIME2(4) -> 2014-09-04 09:35:47.0163
Alternativt på SQL 2005 og tidligere:
SELECT original =GETDATE(), [floor] =DATEADD(ms,-DATEDEL(ms,GETDATE()),GETDATE()), [loft] =DATEADD(ms,1000-DATEDEL(ms, GETDATE()),GETDATE()), [afrundet] =DATEADD(ms,CASE WHEN DATEPART(ms,GETDATE()) <500 THEN 0 ELSE 1000 END-DATEPART(ms,GETDATE()),GETDATE())
Dette er lidt hurtigere end at konvertere til og fra en strengrepræsentation.