У меня следующий запрос:
DECLARE @someDateTime DATETIME = '2019-12-01 00:00:00.000'; -- 1st December 2019
SELECT @someDateTime;
Результат
2019-01-12 00:00:00.000
Я ожидал, что результат будет 2019-12-01 00:00:00.000
(1 st *) 1011 * Декабрь 2019 г.) - Меняется месяц и дата по неизвестной причине.
До недавнего времени у меня никогда не было проблем с этим форматом.
Как мне ввести дату в формате "ГГГГ-ММ-ДД ЧЧ: мм: сс.000", и сохранить ли ее в том формате, который был присвоен переменной / отображен в выборке?
Какой параметр определяет этот формат, который мог измениться?
Потенциально полезная информация
dbcc useroptions
Результат:
Set Option | Value
---------- -----
...
language | British
dateformat | dmy
...
То, что я пробовал:
Запрос 1
Изменение даты на что-то, что было бы недопустимым, если поменять местами
DECLARE @someDateTime DATETIME = '2019-12-20 00:00:00.000';
SELECT @someDateTime;
Результат:
Сообщение 242, Уровень 16, Состояние 3, Строка 4
Преобразование типа данных varchar в тип данных datetime привело к значению вне допустимого диапазона.
Запрос 2
Установка переменной после ее объявления
DECLARE @someDateTime DATETIME;
SET @someDateTime = '2019-12-01 00:00:00.000';
SELECT @someDateTime;
Результат - НЕОБХОДИМЫЙ:
2019-01-12 00:00:00.000
Запрос 3
Вставка переменной в табличную переменную
DECLARE @someDateTime DATETIME = '2019-12-01 00:00:00.000';
DECLARE @someTable TABLE (someDateTimeColumn DATETIME);
INSERT @someTable VALUES (@someDateTime);
SELECT * FROM @someTable
Результат - НЕОБХОДИМО:
someDateTimeColumn
------------------
2019-01-12 00:00:00.000
Запрос 4
Вставка данных непосредственно в переменную таблицы ble
DECLARE @someTable TABLE (someDateTimeColumn DATETIME);
INSERT @someTable VALUES ('2019-12-01 00:00:00.000');
SELECT * FROM @someTable
Результат: UNDESIRED
someDateTimeColumn
------------------
2019-01-12 00:00:00.000
Запрос 5
Изменение формата введенной строки
DECLARE @someDateTime DATETIME = '01/12/2019';
SELECT @someDateTime;
Результат - DESIRED
2019-12-01 00:00:00.000
Запрос 6
Изменение формата введенной строки
DECLARE @someDateTime DATETIME = '2019-12-01T00:00:00.00';
SELECT @someDateTime;
Результат - Желаемый:
2019-12-01 00:00:00.000
Запрос 7
Изменение формата введенной строки
DECLARE @someDateTime DATETIME = '2019-12-01';
SELECT @someDateTime;
Результат - НЕОБХОДИМО:
2019-01-12 00:00:00.000
Запрос 8
Использование SET DATEFORMAT
SET DATEFORMAT ymd
DECLARE @someDateTime DATETIME = '2019-12-01';
SELECT @someDateTime;
Результат - желаемый
2019-12-01 00:00:00.000