SQL Server将字符串转换为datetime失败

时间:2014-12-13 16:28:24

标签: sql sql-server string datetime

我有这样的数据:

+-----+---------+----------+
| 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,我缺少什么?

任何人都可以帮助我吗?

谢谢

2 个答案:

答案 0 :(得分:1)

这可以通过where子句之间的简单来完成,如下所示:

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')

答案 1 :(得分:0)

尝试:

select 
    id, name, expdate 
from 
    cookies 
where 
    convert(datetime, '01/' + expdate, 103) between getdate() 
                                                and convert(datetime, '01/03/2015', 103)

无需使用datediff功能,您只需检查expdate是否在给定时间段内。

此外,您收到此错误是因为datediff函数中的第二个参数应该是有效日期,而不仅仅是字符串'datetime'。