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?