Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Преобразуване на дата и култура:Разлика между DATE и DATETIME

ISO-8601 за DATETIME (по-старият тип) е по някакъв начин "счупен" или "адаптиран" (в зависимост от това дали го разглеждате като грешка или функция) - трябва да използвате YYYYMMDD (без всякакви тирета), за да работи независимо от езиковите настройки.

За DATE или DATETIME2(n) типове данни, това е коригирано и "правилният" ISO-8601 формат YYYY-MM-DD винаги ще се тълкува правилно.

-- 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'); 

Това е странност на DATETIME въведете (и не единствения....) - просто го регистрирайте, знайте за него - и продължете напред (което означава:не използвайте DATETIME вече - използвайте DATE или DATETIME2(n) вместо това - много по-приятна за работа!) :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразуване на ‘time’ в ‘datetimeoffset’ в SQL Server (T-SQL примери)

  2. Генерирайте набор от резултати от нарастващи дати в TSQL

  3. Извличане на идентификатора на вмъкнат запис:Php &MS SQL SERVER

  4. Начин за извличане от стойност на DateTime без секунди

  5. Оптимизация на SQL заявки:Най-добри практики за подобрена производителност