根据账单日定义窗口

时间:2016-09-09 09:57:02

标签: sql sql-server sql-server-2008

我们的账单天数因客户而异。由于我需要通过报告周期跟踪客户,我想自动调整参数。此信息将填充报告。

bolow代码不起作用,但说明了我想要实现的目标:

declare @BillDate int
set @BillDate = 18

if @billdate > DATEPART(dd, getdate()) 
    select DATEPART(yyyy, getdate()) ++ DATEPART(mm,getdate()) ++ @BillDate  --last bill date
else
    select DATEPART(yyyy, getdate()) ++ DATEPART(mm,getdate())-1 ++ @BillDate  --last bill date

我还考虑过使用dateadd()添加一个月,但我需要更改当天的部分时间,我不确定该怎么做。

有一种普遍接受的方式吗?我的想法看起来都像黑客一样。

编辑/更新:我将在where子句中使用它来过滤,所以:

declare @LastBillDate date, @billday as int
select @billday = billdate from btable where customer = 'Cust'

--Define @LastBillDate here based on getdate() and @billday

SELECT *
FROM atable
WHERE starttime > @LastBillDate

1 个答案:

答案 0 :(得分:0)

更改您的选择语句,如下所示:

SELECT CONCAT(DATEPART(yyyy, getdate()),'-',DATEPART(mm,getdate()),'-',@BillDate)