使用SQL获取下一个帐单日期

时间:2014-03-04 12:50:05

标签: sql sql-server tsql

我需要编写一个查询,选择每天(30,60,90,Nx30)前创建的定期订单列表。如果没有必要,我不想使用游标。我们的目标是能够运行一个查询,向我显示今天要开具的订单。

我意识到这段代码不起作用,但我认为它说明了我尝试做的事情:

declare @period int;
set @period = 30;

select @period = @period - @period, [id] from orders 
where 
    datepart(year, StartedAt) =  datepart(year, (dateadd(day, -@period, getutcdate())))
    and datepart(month, StartedAt) =  datepart(month, (dateadd(day, -@period, getutcdate())))
    and datepart(day, StartedAt) =  datepart(day, (dateadd(day, -@period, getutcdate())))

谢谢。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望从orders获取行,其中StartedAt的天数是该期间的倍数。如果是这样,这应该做你想要的:

select o.*
from orders o
where datediff(day, StartedAt, getutcdate()) % @period = 0;

这会计算今天和StartedAt之间的日期数,然后使用“mod”运算符来确定它是@period的倍数。