SQL Weird Преобразование типа данных char в ошибку типа данных datetime - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть этот запрос, который работает нормально:

SELECT 
Value
    FROM data
    WHERE MetaDataID = 'f249819e-817f-4be5-bee9-21aa3d7f72e6'

, который возвращает:

27/6/2011 19:12:28
11/7/2011 19:18:54
10/7/2011 11:49:35
3/7/2011 17:41:53

если я изменю запрос на:

SELECT 
VALUE,
MONTH(Value)
    FROM data  
    WHERE MetaDataID = 'f249819e-817f-4be5-bee9-21aa3d7f72e6'

Я получаю сообщение об ошибке: преобразование типа данных char в тип данных datetime привело к значению datetime вне диапазона.

Информация, которая может помочь:

1) Столбец значения имеет тип VARCHAR.

2) КОГДА я указываю MetaDataId, я удостоверяюсь, что результатом является «дата». чтобы убедиться, что я также использовал WHERE IsDate (Value) = 1, а также использовал ISDATe (Value) для выбора, чтобы посмотреть, был ли каждый результат датой, и это было ...

Я не знаю, почему это происходит ... У кого-нибудь есть подсказка?

1 Ответ

3 голосов
/ 09 ноября 2011

Вы должны выполнить явное преобразование в тип данных datetime.

SELECT 
VALUE,
MONTH(Convert(DateTime, Value,103)) as [Month]
    FROM data  
    WHERE MetaDataID = 'f249819e-817f-4be5-bee9-21aa3d7f72e6'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...