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?