Мне нужно выбрать все записи с датой выставления счета через 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 ответа
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)
Я бы использовал начало дня с >=
и начало следующего дня с <
...
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
Похожие вопросы
Новые вопросы
sql-server
Microsoft SQL Server - это система управления реляционными базами данных (RDBMS). Используйте этот тег для всех выпусков SQL Server, включая Compact, Express, Azure, Fast-track, APS (ранее PDW) и Azure SQL DW. Не используйте этот тег для других типов СУБД (MySQL, PostgreSQL, Oracle и т. Д.). Не используйте этот тег для проблем, связанных с разработкой программного обеспечения и мобильных устройств, если только он не связан напрямую с базой данных.