+ -
当前位置:首页 → 问答吧 → sql server日期计算,请大侠帮忙看看。

sql server日期计算,请大侠帮忙看看。

时间:2011-12-05

来源:互联网

表 table1 有两个日期字段 a1,b1,我想求出b1与a1相差10天以内的记录。在sql server 中sql 如下:

select * from table1 where datediff(dd,a1,b1)>=0 and datediff(dd,a1,b1)<=10;


但是它求出:b1=2009-01-23 15:40:00.000 ,a1=2009-01-13 00:00:00.000 ,
这条记录。这不明显超过10天了么?
难道sql server中计算时只考虑天,不考虑小时吗?
请各位给予指导。

作者: Forcast457   发布时间: 2011-12-05

SQL code

datediff(dd,expr1,expr2)
这里的day只考虑天数,不考虑时分秒,如果要精确,可以换算到下一位
比如10day等于240hour

作者: geniuswjt   发布时间: 2011-12-05

是的,你可以精确到小时

作者: ssp2009   发布时间: 2011-12-05

datediff(hh,a1,b1)<=240

作者: ssp2009   发布时间: 2011-12-05

引用楼主 forcast457 的回复:
表 table1 有两个日期字段 a1,b1,我想求出b1与a1相差10天以内的记录。在sql server 中sql 如下:

select * from table1 where datediff(dd,a1,b1)>=0 and datediff(dd,a1,b1)<=10;


但是它求出:b1=2009-01-23 15:40:00.000 ,a1=2009-01-13 00:……

你这是按照天计算的.所以只考虑到天.
你也可以按照小时(楼上说的)来计算.datediff(hh,a1,b1)<=10*240

或者:

select * from table1 where datediff(dd,a1,b1)>=0 and 
(datediff(dd,a1,b1)<=9 or (datediff(dd,a1,b1) = 10 and convert(varchar(8),a1,108)> convert(varchar(8),b1,108)));

作者: dawugui   发布时间: 2011-12-05

可以精确到分 用MI

作者: fredrickhu   发布时间: 2011-12-05

你前面写的是什么?不是datediff(dd,a1,b1)吗??当然是天了。需要改变这里

作者: TravyLee   发布时间: 2011-12-05

热门下载

更多