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)