日期的比较问题
我有一个表tbl_1
有一个字段 term 日期类(这是一个交租截止日期)
有内容
id term
1 2003-12-01
2 2003-12-22
3 2004-01-11
4 2004-02-01
5 2004-3-1
6 2004-12-12
我想设置一个三个月的告警,即与今日比较,把租金还留有三个月的id 和 term
找出来
目前用了两个语句
一是
select * from 表名 where cast(term as char(10)) between cast(getdate()+90 as char(10)) and cast(getdate() as char(10))
没有反应,
二是
select * from 表名 where datename(month,term) between datename(month,getdate())+3 and datename(month,getdate())
发现这句对本年度有效,跨年就不行了
问题点数:0、回复次数:6Top
1 楼txlicenhe(马可)回复于 2003-12-01 20:07:53 得分 0
select * from 表名 where term between convert(char(10),getdate(),120)
and convert(char(10),dateadd(month,3,getdate()),120)
Top
2 楼zjcxc(邹建)回复于 2003-12-01 20:45:24 得分 0
select * from tb1_1 where datediff(month,term,getdate())>=3Top
3 楼zjcxc(邹建)回复于 2003-12-01 20:48:05 得分 0
上面的应该理解错了,楼主的意思是0~90天,还是0~3个月?
如果是前者,用:
select * from tb1_1 where datediff(day,term,getdate()) between 0 and 90
后者,用:
select * from tb1_1 where datediff(month,term,getdate()) between 0 and 3
Top
4 楼xiaoliaoyun(流浪的云)回复于 2003-12-01 20:53:25 得分 0
zjcxc(邹建) 的并不太正确吧
例如1月29到4月1日也会返回3,而实际上还没有到三个月Top
5 楼xiaoliaoyun(流浪的云)回复于 2003-12-01 20:54:33 得分 0
后面这个正确了,
^_^Top
6 楼xiaoliaoyun(流浪的云)回复于 2003-12-01 20:55:55 得分 0
zjcxc(邹建)写的真快,果然是高手*_*(太崇拜了)Top




