sql >> Databáze >  >> RDS >> Sqlserver

Vynechání milisekund v datu

Použijte DATETIME2 , nový datový typ v SQL Server 2008, který podporuje zlomkovou přesnost:

SELECT
  CONVERT(DATETIME2(0),SYSDATETIME()) [yyyy-mm-dd hh:mm:ss]
, CONVERT(DATETIME2(1),SYSDATETIME()) [yyyy-mm-dd hh:mm:ss.f]
, CONVERT(DATETIME2(2),SYSDATETIME()) [yyyy-mm-dd hh:mm:ss.ff]
, CONVERT(DATETIME2(3),SYSDATETIME()) [yyyy-mm-dd hh:mm:ss.fff]
, CONVERT(DATETIME2(4),SYSDATETIME()) [yyyy-mm-dd hh:mm:ss.ffff]
, CONVERT(DATETIME2(5),SYSDATETIME()) [yyyy-mm-dd hh:mm:ss.fffff]
, CONVERT(DATETIME2(6),SYSDATETIME()) [yyyy-mm-dd hh:mm:ss.ffffff]
, CONVERT(DATETIME2(7),SYSDATETIME()) [yyyy-mm-dd hh:mm:ss.fffffff]

Převod se zaokrouhlí na nejbližší jednotku, např.:

2014-09-04 09:35:47.0162993 as DATETIME2(4) -> 
2014-09-04 09:35:47.0163

Případně na SQL 2005 a dřívějších:

SELECT
  original  = GETDATE()
, [floor]   = DATEADD(ms,-DATEPART(ms,GETDATE()),GETDATE())
, [ceiling] = DATEADD(ms,1000-DATEPART(ms,GETDATE()),GETDATE())
, [rounded] = DATEADD(ms,CASE WHEN DATEPART(ms,GETDATE()) < 500 THEN 0 ELSE 1000 END-DATEPART(ms,GETDATE()),GETDATE())

Je to o něco rychlejší než převod do az řetězcové reprezentace.



  1. mysql vyberte různé řádky do sloupce seznamu odděleného čárkami

  2. Import zazipovaného CSV souboru do PostgreSQL

  3. Proč by Magento nedokázalo uložit zákazníka po vygenerování ID?

  4. Udržujte pořadí od klauzule „IN“.