好的,所以我有一个我每周运行的SQL查询,现在需要每月运行一次。在查询中,我有一个开始生效日期和报告应该提取的日期范围的结束生效日期。现在我想要做的是开始和结束日期的公式。
我希望从今天开始的上个月开始生效日期,然后是上个月的最后一个星期一。
结束生效日期我希望成为产品详细信息表格中的最大修改日期。
我知道我在找什么,但我不确定如何在代码中写这个?感谢!!!
答案 0 :(得分:1)
试试这个
declare @dt datetime
set @dt=GETDATE()
select DATEADD(WEEK,DATEDIFF(WEEK,0,DATEADD(DAY,DATEPART(DAY,dateadd(m,-1,GETDATE())),dateadd(m,-1,GETDATE()))), 0) StartDate
答案 1 :(得分:1)
这应该可以解决问题:
DECLARE @Today date = convert(date, getdate());
DECLARE @Monday tinyint = 1;
DECLARE @LastDayOfMonth date = DATEADD(d,-1,DATEADD(month, DATEDIFF(month, 0, @Today), 0));
DECLARE @LastWeekDayOfMonth int = datepart(weekday,DATEADD(d,-1,DATEADD(month, DATEDIFF(month, 0, @Today), 0)));
SELECT DATEADD(d, @Monday-@LastWeekDayOfMonth+1, @LastDayOfMonth) AS LastMonday