Vad är funktionen CURRENT_DATE eller aktuellt datum för SQL Server?

Vad är SQL Server-funktionen som låter dig få det aktuella datumet som en DATE -typ som SQL Standardfunktionen ”s CURRENT_DATE. Vad är <current date value function> för SQL Server?

Med hjälp av PostgreSQL ser jag för något liknande,

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

Svar

Du kan använda antingen GETDATE (returtyp datetime ) eller SYSDATETIME (returtyp datetime2 ), med skillnaden är precisionen upp till nanosekunder för SYSDATETIME().

Exempel :

SELECT GETDATE() fn_GetDate, SYSDATETIME() fn_SysDateTime 

Resultat:

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

Se Datum- och tidsdatatyper och -funktioner (Transact-SQL) i produktdokumentationen.


För fullständighet erkänner SQL Server också CURRENT_DATE som nämns i frågan, som en ODBC-skalarfunktion :

SELECT {fn CURRENT_DATE()}; 

Detta returnerar varchar(10), så behövs en uttrycklig roll eller konvertera till date datatyp:

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

Den inbyggda i funktioner rekommenderas över ODBC-skalära funktioner.

Svar

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

Det bästa sättet är

SELECT CAST( GETDATE() AS date ); 

I tillägg i SQL Server kan du casta SYSDATETIME() hittills,

SELECT CAST( SYSDATETIME() AS date ); 

Dokumenten på SYSDATETIME (Transact-SQL) visa några fler exempel,

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

Det kan finnas fördelar CAST (GETDATE() AS date), som ger naturligt mindre precision.

Kommentarer

  • Det är så jag alltid har gjort det, men om du castar till DATE, spelar det någon roll om ingångstiden har precision i nanosekunden?

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *