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?