Jaka jest funkcja CURRENT_DATE lub bieżąca wartość daty dla SQL Server?

Jaka jest funkcjonalność programu SQL Server, która umożliwia pobranie aktualnej daty jako DATE typ, taki jak SQL Standardowa funkcja „s CURRENT_DATE. Co to jest <current date value function> dla SQL Server?

Używając PostgreSQL, szukam na przykład

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

Answer

Możesz użyć GETDATE (typ zwrotu datetime ) lub SYSDATETIME (zwracany typ datetime2 ), przy czym różnica polega na dokładności do nanosekund dla SYSDATETIME().

Przykład :

SELECT GETDATE() fn_GetDate, SYSDATETIME() fn_SysDateTime 

Wyniki:

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

Zobacz Data i godzina Typy danych i funkcje (Transact-SQL) w dokumentacji produktu.


Aby zapewnić kompletność, SQL Server rozpoznaje również CURRENT_DATE, jak wspomniano w pytaniu, jako ODBC funkcję skalarną :

SELECT {fn CURRENT_DATE()}; 

Zwraca to varchar(10), więc wymagałoby jawnego rzutowania lub konwersji na date typ danych:

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

Wbudowana w funkcjach są zalecane zamiast funkcji skalarnych ODBC.

Odpowiedź

CAST (... to date) z GETDATE() lub SYSDATETIME()

Najlepszym sposobem jest

SELECT CAST( GETDATE() AS date ); 

Dzięki rozszerzeniu w SQL Server możesz przesyłać SYSDATETIME() na bieżąco,

SELECT CAST( SYSDATETIME() AS date ); 

Dokumenty na SYSDATETIME (Transact-SQL) pokaż więcej przykładów,

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

Mogą istnieć zalety CAST (GETDATE() AS date), ponieważ natywnie zwraca mniejszą dokładność.

Komentarze

  • Zawsze to robiłem, chociaż jeśli przesyłasz do DATE, czy ma znaczenie, czy czas wejściowy ma dokładność do nanosekund?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *