Hvad er funktionen CURRENT_DATE eller den aktuelle datoværdi for SQL Server?

Hvad er SQL Server-funktionalitet, der giver dig mulighed for at få den aktuelle dato som en DATE -type som SQL Standard “s CURRENT_DATE -funktion. Hvad er <current date value function> til SQL Server?

Ved hjælp af PostgreSQL ser jeg ud til noget som

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

Svar

Du kan bruge enten GETDATE (returtype datetime ) eller SYSDATETIME (returtype datetime2 ), hvor forskellen er præcisionen op til nanosekunder for SYSDATETIME().

Eksempel :

SELECT GETDATE() fn_GetDate, SYSDATETIME() fn_SysDateTime 

Resultater:

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

Se Datatyper og -funktioner (Transact-SQL) for dato og tid i produktdokumentationen.


For fuldstændighed genkender SQL Server også CURRENT_DATE som nævnt i spørgsmålet som en ODBC-skalarfunktion :

SELECT {fn CURRENT_DATE()}; 

Dette returnerer varchar(10), så det ville være nødvendigt med en eksplicit rollebesætning eller konvertering til date datatype:

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

Den indbyggede i funktioner anbefales over ODBC-skalarfunktioner.

Svar

CAST (... to date) med GETDATE() eller SYSDATETIME()

Den bedste måde er

SELECT CAST( GETDATE() AS date ); 

Ved udvidelse i SQL Server kan du caste SYSDATETIME() til dato,

SELECT CAST( SYSDATETIME() AS date ); 

Dokumenterne på SYSDATETIME (Transact-SQL) viser nogle flere eksempler,

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 */ 

Der kan være fordele CAST (GETDATE() AS date), som returnerer indbygget mindre præcision.

Kommentarer

  • Sådan har jeg altid gjort det, selvom hvis du støber to DATE, betyder det noget, om inputtiden har nøjagtighed til nanosekund?

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *