【问题标题】:How to get sets of date divided by week on the basis of present date and First day of month如何根据当前日期和每月的第一天获得按周划分的日期集
【发布时间】:2018-01-22 12:12:25
【问题描述】:

例如

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

(开始日期:2018 年 1 月 16 日和结束日期:2018 年 1 月 22 日)

第二个日期设置为

(开始日期:2018 年 1 月 9 日和结束日期:2018 年 1 月 15 日)

和 第三个日期设置为

(开始日期:2018 年 1 月 2 日和结束日期:2018 年 1 月 8 日)

和 最后日期设置为

(开始日期:2018 年 1 月 1 日和结束日期:2018 年 1 月 1 日)

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

【问题讨论】:

  • 将样本数据和预期结果添加为格式化文本!!! (请不要提供图片。)同时向我们展示您当前的查询尝试。
  • 您使用的是 MySQL 还是 MS SQL Server?
  • @jarlh Sql 服务器

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


【解决方案1】:

试试这个

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

我的结果

【讨论】:

  • 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
相关资源
最近更新 更多