2015-07-11 5 views
0

В настоящее время используется SQL Server 2008. В попытке отладить некоторые данные о плохих датах, следующий код был написан с примером плохих данных.SQL Server - выберите ошибку YEAR

SELECT ISDATE('10-22-002') 
SELECT YEAR('10-22-002') 

Запуск утверждений в базе данных A, результаты: «1» и «2002».

Запуск операторов в базе данных B, результаты: «1» и ошибка.

Формат даты - MDY на всех сеансах перед запуском операторов.

Msg 241, Level 16, State 1
Конверсия удалось при преобразовании DateTime из строки символов.

Все, что я могу найти, указывает, что формат даты установлен на уровне сервера или сеанса. Есть ли настройка на уровне БД для этого?

+0

оба одинаковые версии ??? отличаются друг от друга. Выполняя оба этих утверждения, один из них дает 1 в качестве результата. 2-я ошибка, если у вас есть 2002 год, он даст год – mohan111

ответ

1

Вам необходимо указать '10-22-002' как datetime.

SELECT YEAR(cast('10-22-002' as datetime)) 
+0

SUPER - работал как шарм. Я все еще сбив с толку, почему функция SELECT YEAR работает над одной БД, но не в другой, в Management Studio. – Galactic