Вы не говорите, в какой локали вы находитесь, так как это будет иметь значение .Скорее всего, ваш столбец DATE не является DATETIME.Вы не говорите, в какой локали вы находитесь, но (в качестве примера) форматы даты и времени США и Великобритании обрабатываются по-разному в обратном формате.
Великобритания видит дату как yyyy-dd-mm hh:mm:ss.fff
США видит датуas yyyy-mm-dd hh:mm:ss.fff
Например, выдается ошибка:
SET LANGUAGE british
GO
SELECT CAST ('1999-01-21 10:11:12.345' AS DATETIME)
GO
Однако, если вы измените локаль на us_english
, она будет правильно проанализирована.
Если вы хотите гарантировать, что он всегда будет анализироваться как yyyy-mm-dd
, тогда вам нужно быть строгим и использовать полную спецификацию ISO, указав Z
между датой и временем, например: 1999-01-21Z10:11:12.345
проанализирует водинаково в обеих локалях.
В конечном итоге вы хотите изменить столбец Date
на тип данных DATETIME
, но вам может понадобиться временно изменить вашу локаль, чтобы иметь возможность сделать это успешно;то есть:
SET LANGUAGE us_english
GO
ALTER TABLE [...]
GO
SET LANGUAGE british
GO
Еще одна забавная вещь, на которую нужно обращать внимание при манипулировании данными даты / времени.
Sidenote: нет Я не знаю, почему Microsoft думает насв Блайти видят дату как гггг-дд-мм ... Я никогда не сталкивался с этим форматом.Может быть унаследован от европейских форматов?