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

Nie można przechowywać niektórych formatów daty i godziny w SQL Server

SQL Server nie przechowuje DateTime w dowolnym formacie ciągu - jest przechowywana jako 8-bajtowa wartość liczbowa.

Różne ustawienia (język, format daty) wpływają tylko na to, jak DateTime jest wyświetlany w SQL Server Management Studio — lub jak jest analizowany podczas próby konwersji ciągu na DateTime .

Istnieje wiele formatów obsługiwanych przez SQL Server — zobacz MSDN Books Online na CAST i KONWERSJA . Większość z tych formatów jest zależna jakie masz ustawienia — dlatego te ustawienia mogą czasami działać — a czasami nie.

Sposobem na rozwiązanie tego problemu jest użycie formatu daty ISO-8601 który jest obsługiwany przez SQL Server - ten format działa zawsze - niezależnie od ustawień języka SQL Server i formatu daty.

format ISO-8601 jest obsługiwany przez SQL Server jest dostępny w dwóch wersjach:

  • YYYYMMDD tylko dla dat (bez części czasu) – uwaga tutaj:bez myślników! , to bardzo ważne! YYYY-MM-DD jest NIE niezależnie od ustawień formatu daty na serwerze SQL Server i NIE pracuj we wszystkich sytuacjach!

lub:

  • YYYY-MM-DDTHH:MM:SS dla dat i godzin – uwaga tutaj:ten format ma myślniki.

Dotyczy to SQL Server 2000 i nowszych.

Jeśli używasz SQL Server 2008 i DATE typ danych (tylko DATE - nie DATETIME !), to rzeczywiście możesz również użyć YYYY-MM-DD format i będzie działać również z dowolnymi ustawieniami na serwerze SQL.

Nie pytaj mnie, dlaczego cały ten temat jest tak zawiły i nieco zagmatwany – tak po prostu jest. Ale z YYYYMMDD format, powinieneś być w porządku dla dowolnej wersji SQL Server oraz dla dowolnego języka i ustawienia formatu daty w twoim SQL Server.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Z SPRAWDŹ OGRANICZENIE, a następnie SPRAWDŹ OGRANICZENIE vs. DODAJ OGRANICZENIE

  2. Zmuś Oracle do zwrócenia TOP N wierszy z SKIP LOCKED

  3. Jak włączyć przechwytywanie zmian danych (CDC) w bazie danych w programie SQL Server — samouczek dotyczący programu SQL Server

  4. Klauzula WHERE dotycząca typu danych SQL Server Text

  5. Szybkie wstawianie relacyjnych (znormalizowanych) tabel danych do bazy danych SQL Server 2008