每个月执行第一个和最后16天的sql脚本。

时间:2017-01-03 18:10:51

标签: sql-server sql-server-2012

我有一个脚本,我必须手动运行几次,但现在它看起来需要每月运行两次。问题是日期是动态的,工作需要在每个月的1号和16号运行,但需要提取过去16天的所有数据。例如,如果我们在本月的第一天(1月)运行它,那么日期将是> = 2016-12,16和< = 2016-12-31

我一直在查看sql server的日期函数,但我不确定它是否适用于我需要的东西。

1 个答案:

答案 0 :(得分:0)

我会查看DateAdd,并在该值中添加负数日期,以便返回16天。

select 
    custKey,
    sum(salesAmt) as Sales, 
    sum(returnAmt) as Credit, 
    (sum(salesAmt) - sum(returnAmt)) as CONNET
from
    [SpotFireStaging].[dbo].[tsoSalesAnalysis] 
inner join 
    [SpotFireStaging].[dbo].OOGPLensDesc as o on tsoSalesAnalysis.ItemKey = O.ItemKey
where 
    PostDate between --DATEADD(MONTH, DATEDIFF(MONTH,0, GETDATE())-1,0 ) 
--AND DATEADD(MS, -3,DATEADD(MM, DATEDIFF(M,-1, GETDATE()) -1, 0)) 
    '2016-12-01' and '2017-01-01'
group by 
    custkey

我个人只是用cron运行一个脚本并将其设置为每个月的1日和16日运行。