SQL Server将字符串转换为日期时间失败
我有这样的数据:SQL Server将字符串转换为日期时间失败,sql,sql-server,string,datetime,Sql,Sql Server,String,Datetime,我有这样的数据: +-----+---------+----------+ | id | name | expdate | +-----+---------+----------+ | 1 | chookies| 02/2015 | | 2 | snack | 03/2015 | | 3 | snack1 | 04/2015 | +-----+---------+----------+ expdate的数据类型是varchar(7),我想知道从现在到2015年
+-----+---------+----------+
| id | name | expdate |
+-----+---------+----------+
| 1 | chookies| 02/2015 |
| 2 | snack | 03/2015 |
| 3 | snack1 | 04/2015 |
+-----+---------+----------+
expdate
的数据类型是varchar(7)
,我想知道从现在到2015年3月过期的cookie的名称
我尝试了这个,但出现了一个错误:
select
id, name,
convert(datetime, '01/' + expdate, 103)
from
cookies
where
datediff(month, datetime, convert(datetime, '01/' + expdate, 103))
错误:
从字符串转换日期时间时转换失败
我正在使用SQL Server 2005,我缺少什么
有人能帮我吗
谢谢这可以通过where子句中的一个简单的between来完成,如下所示:
select id,name,convert(datetime,'01/'+expdate,103)
from cookies
where convert(datetime,'01/'+expdate,103) between getdate() and convert(datetime,'2015-03-01 00:00:00.000')
尝试:
无需使用datediff
函数,您只需检查expdate
是否在给定时段之间
而且,出现此错误是因为
datediff
函数中的第二个参数应该是有效的日期,而不仅仅是字符串“datetime”。检查是否有expdate
列month
值大于12
如'13/2015'
没有大于12的数据,因为它应该检查此值declare@date varchar(7)='12/2015'
select convert(datetime,'01/'+@date,103)yes,NoDisplayName我想你是对的,数据expdate有问题,我尝试使用小数据它工作,转换数据没有错误
select
id, name, expdate
from
cookies
where
convert(datetime, '01/' + expdate, 103) between getdate()
and convert(datetime, '01/03/2015', 103)