【问题标题】:Week Start from Monday for a given date周 从给定日期的星期一开始
【发布时间】:2020-03-24 15:15:23
【问题描述】:

在下图中,我尝试将“ManufactureDate”这一周开始到每个星期一,但无法获得所需的结果。

使用的查询:

select distinct     dateadd(week, DATEDIFF(week, 0, [ManufactureDate]),0 )sp, [ManufactureDate] 
FROM ab

当前结果集:

SP                           Manufacturing Date
2019-10-14 00:00:00.000  2019-10-13 00:00:00.000
2019-10-14 00:00:00.000  2019-10-14 00:00:00.000
2019-10-14 00:00:00.000  2019-10-15 00:00:00.000
2019-10-14 00:00:00.000  2019-10-16 00:00:00.000
2019-10-14 00:00:00.000  2019-10-17 00:00:00.000
2019-10-14 00:00:00.000  2019-10-18 00:00:00.000
2019-10-21 00:00:00.000  2019-10-20 00:00:00.000

期望的结果:

Sp        Manufacturing Date
10/14/2019  10/14/2019
10/14/2019  10/15/2019
10/14/2019  10/16/2019
10/14/2019  10/17/2019
10/14/2019  10/18/2019
10/14/2019  10/20/2019
10/21/2019  10/21/2019

图片:

【问题讨论】:

标签: sql sql-server


【解决方案1】:
SELECT 
DATEADD(DAY, ((DATEPART(WEEKDAY,[ManufactureDate]) + 5) % 7) * -1, [ManufactureDate]) Sp, [ManufactureDate]
FROM ab

这是fiddle

Sp                  ManufactureDate
2019-10-07          2019-10-13
2019-10-14          2019-10-14
2019-10-14          2019-10-15
2019-10-14          2019-10-16
2019-10-14          2019-10-17
2019-10-14          2019-10-18
2019-10-14          2019-10-19
2019-10-14          2019-10-20
2019-10-21          2019-10-21

【讨论】:

    猜你喜欢
    • 2017-07-19
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多