Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SYSDATETIME() vs GETDATE() w SQL Server:jaka jest różnica?

SQL Server ma kilka funkcji, które zwracają bieżącą datę/godzinę. Dwa z nich to GETDATE() i SYSDATETIME() funkcje.

Na pierwszy rzut oka te dwie funkcje wydają się robić to samo – pobierają bieżącą datę i godzinę z systemu operacyjnego komputera, na którym działa instancja SQL Server.

Istnieje jednak subtelna różnica między tymi dwoma.

Różnica? Typ wartości zwracanej

Główna różnica między GETDATE() i SYSDATETIME() jest w typie wartości zwracanej.

  • GETDATE() zwraca datęgodzinę wartość.
  • SYSDATETIME() zwraca datetime2(7) wartość.

Oznacza to, że SYSDATETIME() ma większą precyzję ułamków sekund niż GETDATE() .

Obie funkcje pobierają bieżącą datę i godzinę z systemu operacyjnego komputera, na którym działa instancja SQL Server, ale dokładność ułamkowa jest inna.

Przykład

Oto przykład demonstrujący różne wartości zwracane dla każdej funkcji:

SELECT 
    GETDATE() AS GETDATE,
    SYSDATETIME() AS SYSDATETIME;

Wynik:

+-------------------------+-----------------------------+
| GETDATE                 | SYSDATETIME                 |
|-------------------------+-----------------------------|
| 2018-06-13 02:48:27.653 | 2018-06-13 02:48:27.6542371 |
+-------------------------+-----------------------------+

Jak wspomniano, SYSDATETIME() , który zwraca datetime2(7) ma większą dokładność ułamkową niż  GETDATE() , który zwraca datę-godzinę wartość.

data/godzina2 typ danych ma również większy zakres dat i opcjonalną precyzję określoną przez użytkownika.

Którego mam użyć?

Firma Microsoft zaleca korzystanie z datetime2 z naszymi wartościami daty/czasu. Ten typ danych jest zgodny ze standardem SQL i jest bardziej przenośny niż data-godzina .

Dlatego użyj SYSDATETIME() chyba że masz powód, aby tego nie robić.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. datetime vs smalldatetime w SQL Server:jaka jest różnica?

  2. Konwertuj „smalldatetime” na „datetime” w SQL Server (przykłady T-SQL)

  3. Uzyskiwanie i instalacja Microsoft SQL Server Management Studio

  4. Napraw „SQL Server zablokował dostęp do STATEMENT„ OpenRowset/OpenDatasource” komponentu „Kwerendy rozproszone ad hoc”

  5. Jak utworzyć unikalne ograniczenie na kolumnie dla już istniejącej tabeli — samouczek SQL Server / TSQL część 97