SQL Server 2008 VarChar To DateTime - PullRequest
       3

SQL Server 2008 VarChar To DateTime

1 голос
/ 23 сентября 2010

У меня есть таблица, где, к сожалению, несколько дат хранятся в виде строк.

У меня есть несколько отчетов, которые приводят их к дате и фильтруют по ним.Это работало нормально до сегодняшнего дня, когда внезапно я получаю эту ошибку

"Преобразование типа данных varchar в тип данных datetime привело к значению вне допустимого диапазона."

Все даты хранятся в формате "гггг-мм-дд" и все они действительны.

Если я выполню следующий оператор SQL

SELECT CAST('2010-06-02' AS DateTime) 

, я ожидаюget "2010-06-02", однако на сегодняшний день я получаю "2010-02-06", что-то изменилось с тем, как даты в форматах SQL.Я посмотрел в региональных настройках на сервере, и все выглядит правильно.

Что еще может быть причиной этого?

Ответы [ 3 ]

3 голосов
/ 23 сентября 2010

Попробуйте установить формат явно

select convert(datetime, '2010-06-02',101)
0 голосов
/ 23 сентября 2010

Однозначный способ получить это преобразование заключается в следующем:

SELECT CAST(replace('2010-06-02', '-', '') AS DateTime) 

И это всегда будет интерпретироваться как ГГГГММДД, игнорируя декларацию set dateformat ydm или любые культурные параметры, имеющиеся в базе данных.

0 голосов
/ 23 сентября 2010

Q1: Что еще может быть причиной этого?

Местный, Вы, вероятно, находитесь под локальным 101 (США) и положили данные из 103 (британский / французский)

Как Барри печально использовать конвертировать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...