gpt4 book ai didi

sql-server-2008 - 当我知道 ISO 8601 中的周数时如何获得一周的第一天

转载 作者:行者123 更新时间:2023-12-04 13:46:24 24 4
gpt4 key购买 nike

例如我知道年份和星期数

year = 2016
week = 1

如何根据 ISO 8601 从中获取一周的第一天

我在表 datetime2[0] 中生成默认值 2015-12-28 的日期类型,但一周的第一天应该是 2016-01- 04

有什么想法吗?

最佳答案

给定任何日期,此 SQL 将返回 ISO 周:SELECT DATEPART(ISO_WEEK, @date)。下面是一个丑陋(但非常有效)的单行代码,用于计算该 ISO 周的第一个日期:

DECLARE @date DATETIME = '2012-09-16'
SELECT (
CASE DATEPART(ISO_WEEK, @date)
WHEN DATEPART(ISO_WEEK, DATEADD(DAY,-6,@date)) THEN DATEADD(DAY,-6,@date)
WHEN DATEPART(ISO_WEEK, DATEADD(DAY,-5,@date)) THEN DATEADD(DAY,-5,@date)
WHEN DATEPART(ISO_WEEK, DATEADD(DAY,-4,@date)) THEN DATEADD(DAY,-4,@date)
WHEN DATEPART(ISO_WEEK, DATEADD(DAY,-3,@date)) THEN DATEADD(DAY,-3,@date)
WHEN DATEPART(ISO_WEEK, DATEADD(DAY,-2,@date)) THEN DATEADD(DAY,-2,@date)
WHEN DATEPART(ISO_WEEK, DATEADD(DAY,-1,@date)) THEN DATEADD(DAY,-1,@date)
ELSE DATEADD(DAY,0,@date)
END
) FirstDayOfISOWeek

现在,这不是我最漂亮的作品,但它通过反复试验工作 - 测试多少天前的 ISO 周仍然相同,然后返回那一天。

关于sql-server-2008 - 当我知道 ISO 8601 中的周数时如何获得一周的第一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34267447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com