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

Konwersja daty i kultura:różnica między DATE a DATETIME

ISO-8601 dla DATETIME (starszy typ) jest w jakiś sposób „zepsuty” lub „dostosowany” (w zależności od tego, czy patrzysz na to jako na błąd, czy jako funkcję) - musisz użyć YYYYMMDD (bez wszelkie myślniki), aby działał niezależnie od ustawień języka.

Dla DATE lub DATETIME2(n) typy danych, zostało to naprawione i „właściwy” format ISO-8601 YYYY-MM-DD zawsze będą poprawnie interpretowane.

-- OK because of "adapted" ISO-8601
SET LANGUAGE GERMAN;
DECLARE @dt DATETIME='20170113'; 

SELECT @dt;

SELECT CAST('20170113' AS DATETIME);
SELECT CONVERT(DATETIME, '20170113'); 

-- OK because of DATETIME2(n)
SET LANGUAGE GERMAN;
DECLARE @dt2 DATETIME2(0) = '2017-01-13'; 

SELECT @dt2;

SELECT CAST('2017-01-13' AS DATETIME2(0));
SELECT CONVERT(DATETIME2(0), '2017-01-13'); 

To dziwactwo DATETIME wpisz (a nie jedyny....) - po prostu zarejestruj go, wiedz o tym - i przejdź dalej (tzn. nie używaj DATETIME już - użyj DATE lub DATETIME2(n) zamiast tego - dużo przyjemniej się z nim pracuje!) :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Darmowe metody naprawy korupcji indeksu SQL Server

  2. Zaloguj się do Microsoft SQL Server Błąd:18456

  3. SQL Server Wyrażenia regularne w T-SQL

  4. Architektura programu SQL Server AlwaysOn (grupa dostępności) i instalacja krok po kroku — 3 kroki ręcznego przełączania awaryjnego

  5. Napisz liczbę z dwoma miejscami po przecinku SQL Server