【问题标题】:Appending weeks to rolling date column将周数附加到滚动日期列
【发布时间】:2021-06-25 10:20:42
【问题描述】:

我有一个每日滚动日期列,[table]。[Date],从 2020-06-27 到今天。

我需要附加一个周数,将 2020-06-27 到 2020-07-03 作为第 1 周,依此类推。周六至周五定义为一周。

我尝试了以下方法。虽然这仅定义了一年中的一周,但一年过去后我会遇到重叠。此外,它没有将第一个日期定义为第 1 周。

datepart(week,[table].[Date]) as Week

【问题讨论】:

    标签: sql sql-server date week-number


    【解决方案1】:

    推测您正在使用 SQL Server(基于 SSMS 标签)。

    您可以计算天数并除以 7:

    select ceiling(datediff(day, '2020-06-26', t.date) / 7.0) as week_number
    

    或者:

    选择 1 + floor(datediff(day, '2020-06-27', t.date) / 7.0) 作为 week_number

    如果您不想硬编码第一个日期,可以使用窗口函数:

    select ceiling(datediff(day, min(t.date) over (), t.date) / 7.0) as week_number
    

    【讨论】:

    • 谢谢,这可行,但第一个日期 (2020-06-27) 的 week_number 为 0,第二个日期 (2020-06-28) 的 week_number 为 1。可以修复吗?跨度>
    • 使用硬编码选项并使用“2020-06-26”作为第一个日期修复了这个问题。再次感谢!
    猜你喜欢
    • 2020-11-25
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    相关资源
    最近更新 更多