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?