我有这样的数据:
+-----+---------+----------+
| 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,我缺少什么?
任何人都可以帮助我吗?
谢谢
答案 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'。