Hva er SQL Server-funksjonaliteten som lar deg få gjeldende dato som en DATE
-type som SQL Standard «s CURRENT_DATE
-funksjon. Hva er <current date value function>
for SQL Server?
Ved å bruke PostgreSQL ser jeg for noe sånt som,
SELECT CURRENT_DATE; current_date -------------- 2018-06-27 (1 row)
Svar
Du kan bruke enten GETDATE
(returtype datetime
) eller SYSDATETIME
(returtype datetime2
), med forskjellen på presisjonen opp 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 funksjoner for dato og klokkeslett (Transact-SQL) i produktdokumentasjonen.
For fullstendighet gjenkjenner SQL Server også CURRENT_DATE
som nevnt i spørsmålet, som en ODBC skalarfunksjon :
SELECT {fn CURRENT_DATE()};
Dette returnerer varchar(10)
, så trenger en eksplisitt rollebesetning eller konvertering til date
datatype:
SELECT CONVERT(date, {fn CURRENT_DATE()});
Den innebygde i funksjoner anbefales over ODBC-skalære funksjoner.
Svar
CAST (... to date)
med GETDATE()
eller SYSDATETIME()
Den beste måten er
SELECT CAST( GETDATE() AS date );
Ved utvidelse i SQL Server kan du kaste SYSDATETIME()
til dags dato,
SELECT CAST( SYSDATETIME() AS date );
Dokumentene på SYSDATETIME
(Transact-SQL) viser noen 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 */
Det kan være fordeler CAST (GETDATE() AS date)
, som gir naturlig mindre presisjon.
Kommentarer
- Slik har jeg alltid gjort det, selv om du støper to DATE, spiller det noen rolle om inngangstiden har presisjon til nanosekundet?