Problem:
Chcesz uzyskać aktualną datę i godzinę w T-SQL, ale nie chcesz przesunięcia strefy czasowej.
Rozwiązanie:
Użyjemy GETDATE(), CURRENT_TIMESTAMP i SYSDATETIME(), aby uzyskać aktualną datę i godzinę bez przesunięcia strefy czasowej. Dwie pierwsze funkcje pozwalają nam uzyskać aktualny czas z mniejszą precyzją. (GETDATE() jest funkcją T-SQL, podczas gdy CURRENT_TIMESTAMP jest standardową funkcją SQL; obie funkcje zwracają ten sam typ danych). Trzecia funkcja, SYSDATETIME(), uzyskuje dokładniejszy czas.
SELECT CURRENT_TIMESTAMP ;
Oto wynik zapytania:
2019-08-14 10:01:06.983
Dyskusja:
W bazie danych SQL Server CURRENT_TIMESTAMP
funkcja zwraca bieżącą datę i godzinę (tj. czas na maszynie, na której działa ta instancja SQL Server) jako datetime
typ danych. Datetime
to mniej precyzyjny czas, który ma maksymalnie trzy ułamki sekund. (W naszym przykładzie jest to 983.)
GETDATE() jest podobna do CURRENT_TIMESTAMP
i zwraca ten sam wynik. Różnica polega na tym, że CURRENT_TIMESTAMP
jest standardem SQL, podczas gdy GETDATE() jest specyficzna dla SQL Server.
SELECT GETDATE() ;
Oczywiście, jeśli chcesz uzyskać dokładniejszą bieżącą datę i godzinę bez przesunięcia strefy czasowej, możesz użyć funkcji SYSDATETIME(). Ta funkcja zwraca datetime2
typ danych z siedmioma ułamkami sekund. Spójrz na poniższy przykład:
SELECT SYSDATETIME() ;
Oto wynik:
2019-08-14 10:01:06.9754163