Мне нужно выбрать все записи с датой выставления счета через 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 дней, игнорируя время?

0
Xi Vix 18 Дек 2013 в 01:06

2 ответа

Лучший ответ
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)
-1
user210757 17 Дек 2013 в 21:22

Я бы использовал начало дня с >= и начало следующего дня с < ...

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
7
dotjoe 17 Дек 2013 в 21:18