我有这个运行良好的查询:
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数据类型会导致日期时间值超出范围。
可能有帮助的信息:
1)Value Column是VARCHAR类型。
2)当我指定MetaDataId时,我确保结果为“date”。为了确保,我也使用了WHERE IsDate(Value)= 1并且我在select上使用了ISDATe(Value)来查看每个结果是否都是日期而且它是......
我不知道为什么会这样?任何人都有线索?
答案 0 :(得分:3)
您必须执行显式转换为datetime
数据类型。
SELECT
VALUE,
MONTH(Convert(DateTime, Value,103)) as [Month]
FROM data
WHERE MetaDataID = 'f249819e-817f-4be5-bee9-21aa3d7f72e6'