Wat is de functie CURRENT_DATE of huidige datumwaarde voor SQL Server?

Wat is de SQL Server-functionaliteit waarmee u de huidige datum kunt krijgen als een DATE -type zoals de SQL Standaard “s CURRENT_DATE feature. Wat is de <current date value function> voor SQL Server?

Met PostgreSQL kijk ik voor zoiets als,

SELECT CURRENT_DATE; current_date -------------- 2018-06-27 (1 row) 

Antwoord

Je kunt ofwel GETDATE (retourneertype datetime ) of SYSDATETIME (retourneer type datetime2 ), met als verschil de precisie tot nanoseconden voor SYSDATETIME().

Voorbeeld :

SELECT GETDATE() fn_GetDate, SYSDATETIME() fn_SysDateTime 

Resultaten:

 fn_GetDate fn_SysDateTime 2018-06-27 10:31:18.963 2018-06-27 10:31:18.9659170

Zie Datum- en tijdgegevenstypen en -functies (Transact-SQL) in de productdocumentatie.


Voor de volledigheid herkent SQL Server ook CURRENT_DATE zoals vermeld in de vraag, als een ODBC-scalaire functie :

SELECT {fn CURRENT_DATE()}; 

Dit retourneert varchar(10), dus zou een expliciete cast nodig zijn of converteren naar de date gegevenstype:

SELECT CONVERT(date, {fn CURRENT_DATE()}); 

De ingebouwde- in functies worden aanbevolen boven ODBC scalaire functies.

Antwoord

CAST (... to date) met GETDATE() of SYSDATETIME()

De beste manier is

SELECT CAST( GETDATE() AS date ); 

Als extensie in SQL Server kunt u SYSDATETIME() tot op heden casten,

SELECT CAST( SYSDATETIME() AS date ); 

De documenten op SYSDATETIME (Transact-SQL) laat nog enkele voorbeelden zien,

SELECT CONVERT (date, SYSDATETIME()) ,CONVERT (date, SYSDATETIMEOFFSET()) ,CONVERT (date, SYSUTCDATETIME()) ,CONVERT (date, CURRENT_TIMESTAMP) ,CONVERT (date, GETDATE()) ,CONVERT (date, GETUTCDATE()); /* All returned 2007-04-30 */ 

Er kunnen voordelen zijn CAST (GETDATE() AS date), aangezien retourneert native minder precisie.

Reacties

  • Dit is de manier waarop ik het altijd heb gedaan, maar als je cast tot DATE, maakt het uit of de invoertijd een precisie heeft tot op de nanoseconde?

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *