使用此语法,但更改为上个月而不是上周

问题描述 投票:0回答:1

使用此语法,结果是前一周的运行日期,我想要上个月的运行日期

SELECT @wrkBeginDate = DATEADD(dd,-(DATEPART(dw,GetDate())+6), GetDate()),
       @wrkEndDate   = DATEADD(dd,-(DATEPART(dw,GetDate())),   GetDate()) 

SELECT @wrkBeginDate = DATEADD(mm,-(DATEPART(dw,GetDate())+6), GetDate()),
       @wrkEndDate   = DATEADD(mm,-(DATEPART(dw,GetDate())),   GetDate()) 
sql sql-server
1个回答
0
投票

要修改查询以计算上个月而不是上周的开始和结束日期,您需要使用月份而不是日期(

mm
表示月份)并调整逻辑以获取第一个和最后一个日期上个月的天数。方法如下:

上个月查询:


declare @wrkBeginDate date ; 
declare @wrkEndDate date ; 

-- Get the first day of the previous month
SELECT @wrkBeginDate = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0),
       -- Get the last day of the previous month
       @wrkEndDate   = DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))

-- Check the results
SELECT @wrkBeginDate AS BeginDate, @wrkEndDate AS EndDate

说明:

  • @wrkBeginDate
    :此查询通过从当前月份减去一个月并将该天设置为该月的第一天来计算上个月的第一天。
  • @wrkEndDate
    :通过先计算当月的第一天,然后减去一天来计算上个月的最后一天。

输出示例:

如果今天是

2024-09-19
,则输出将为:

开始日期 结束日期
2024-08-01 2024-08-31
© www.soinside.com 2019 - 2024. All rights reserved.