用于选择未来日期所有记录的T-SQL语句

时间:2013-12-17 21:06:09

标签: sql-server date

我需要从现在起15天后选择结算日期的所有记录 这没有给我什么,因为它试图比较日期和时间:

 "nextbill = dateadd(d, +15, getdate())"  

这有效:

"select * 
from custrate 
where nextbill >= '2014-01-02 00:00:00' and nextbill < '2014-01-02 23:59:59'"  

从现在开始忽略时间,如何获得15天的所有内容?

2 个答案:

答案 0 :(得分:7)

我会使用>=的第一天开始,第二天开始使用< ...

declare @from datetime, @thru datetime;
set @from = dateadd(d, datediff(d, 0, getdate()) + 15, 0);
set @thru = dateadd(d, 1, @from);

select ...
from custrate
where nextbill >= @from and nextbill < @thru

答案 1 :(得分:-1)

select * 
from custrate 
where convert(date,nextbill) = DATEADD(d, 15, convert(date,getdate()))

或更早版本的sql:

select * 
from custrate 
where DATEADD(dd, DATEDIFF(dd, 0, nextbill), 0) = DATEADD(dd, DATEDIFF(dd, 0, getdate()), 15)