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?