问题描述
- 【SQL求助】用SQL Server查询语句中,IN 的使用问题。
-
我想查询一辆车在一个月内的记录。于是编写了如下代码: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 这,有些数据不能转成时间