我想查询一辆车在一个月内的记录。于是编写了如下代码:
select * from 北京车辆能耗数据.dbo.北京朝批商贸股份有限公司
where
(
[列 0] in ('京AC3537')
and CAST ([列 2] as datetime)>'2013/11/1 00:00:00'
and CAST ([列 2] as datetime)<'2013/12/1 00:00:00'
)
order by CAST ([列 2] as datetime) asc
上述程序执行起来是没问题的。
后来,我想一次性查询两辆车在一个月内的记录。
于是代码更改为:
select * from 北京车辆能耗数据.dbo.北京朝批商贸股份有限公司
where
(
[列 0] in ('京AC3537','京AC3563')
and CAST ([列 2] as datetime)>'2013/11/1 00:00:00'
and CAST ([列 2] as datetime)<'2013/12/1 00:00:00'
)
order by CAST ([列 2] as datetime) asc
这时就出问题了,错误提示:从字符串转换日期和/或时间时,转换失败。
请教各位,问题出在了哪里?
问题应该在 cast 这,有些数据不能转成时间
你只用京AC3563试试行不行?
select * from 北京车辆能耗数据.dbo.北京朝批商贸股份有限公司
where
(
[列 0] in ('京AC3563')
and CAST ([列 2] as datetime)>'2013/11/1 00:00:00'
and CAST ([列 2] as datetime)<'2013/12/1 00:00:00'
)
order by CAST ([列 2] as datetime) asc
如果报错同,则说明的确有部分列2的数据无法转换(对应京AC3563的)
列出俩种方案,你可以试下
第一,将in改成 = 如下:[列 0] = '京AC3537' or [列 0] ='京AC3563')
第二,将后来添加的车牌数据换成其他的试试
应该是 列2 的有些数据不能转换成时间。
把时间去掉,先IN 再加时间
语法上没有问题的,就看看京AC3563中数据有否可以全部都转化成datatime
问题应该在 cast 这,有些数据不能转成时间