如何根据当前日期和月份的第一天获取日期除以周数

时间:2018-01-22 12:12:25

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

例如

如果今天是22 Jan,那么我希望将日期设置为

  

(StartDate:2018-Jan-2018& EndDate:201-Jan-2018)

第二个日期设置为

  

(StartDate:2018-Jan-2018& EndDate:201-Jan-2018)

和 第三个日期设为

  

(StartDate:02-Jan-2018& EndDate:08-Jan-2018)

和 最后日期设为

  

(StartDate:2018年1月1日和EndDate:2018年1月1日)

其中第一个日期将由用户给出,即:2018年1月22日

1 个答案:

答案 0 :(得分:0)

试试这个

DECLARE @First DATE = '01/22/2018'

;WITH CTE
AS
(
    SELECT
       SeqNo = 1,
       StartDt = CAST(DATEADD(DD,-6,@First) AS DATE),
       EndDt = CAST(@First AS DATE)

    UNION ALL

    SELECT
       SeqNo = SeqNo+1,
       StartDt = CASE WHEN DAY(CAST(DATEADD(DD,-1,StartDt) AS DATE)) = 1
                       THEN CAST(DATEADD(DD,-1,StartDt) AS DATE)
                    ELSE CAST(DATEADD(DD,-7,StartDt) AS DATE) END,
       EndDt = CAST(DATEADD(DD,-1,StartDt) AS DATE)
       FROM CTE
          WHERE SeqNo < 4
)
SELECT
    *
    FROM CTE

我的结果

enter image description here