【问题标题】:Interval of current week本周间隔
【发布时间】:2021-01-21 23:12:38
【问题描述】:

如何获取从本周开始到结束的时间间隔 例如

20210118
20210119
20210120
20210121
20210222
20210123

这样检查日期是最新的,无需手动输入日期。

我可以得到开始日期和结束日期,但需要间隔输出。

SET DATEFIRST 4  
DECLARE @d DATETIME

SET @d = GETDATE()

SELECT
  @d ThatDate,
  DATEADD(dd, 0 - (@@DATEFIRST + 5 + DATEPART(dw, @d)) % 7, @d) Monday,
  DATEADD(dd, 6 - (@@DATEFIRST + 5 + DATEPART(dw, @d)) % 7, @d) Sunday

【问题讨论】:

  • 给我们一个提示 - 你能告诉我们你期望的输出吗?我不知道您所说的“需要间隔输出”到底是什么意思。另外,20210222 是错字吗?请拼出 day 之类的东西,而不是使用 lazy shorthand like dd - 你救了一个字符,你得到了什么?
  • 是的,你是对的 20210222 这是我的错误,正确的是 20210122。数据必须是日期时间格式

标签: sql-server date intervals


【解决方案1】:

您可以使用递归 CTE。我已经将您发布的结果作为示例,但这只有六天。不确定是否要排除周日?

SET DATEFIRST 4  
DECLARE @d DATETIME

SET @d = GETDATE()


;WITH cte AS(

    SELECT DATEADD(dd, 0 - (@@DATEFIRST + 5 + DATEPART(dw, @d)) % 7, @d) Dts
    UNION ALL
    SELECT DATEADD(dd,1,Dts) Dts
    FROM cte
    WHERE Dts <= DATEADD(dd, 4 - (@@DATEFIRST + 5 + DATEPART(dw, @d)) % 7, @d)
)

SELECT *
FROM cte

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多