【发布时间】:2021-12-28 18:59:43
【问题描述】:
我正在尝试从某一天开始获取一年中的周数 我检查了堆栈,但很困惑。
SELECT EXTRACT(WEEK FROM TIMESTAMP '2021-01-01'),
extract('year' from TIMESTAMP '2021-01-01')
输出为 53|2021
我希望它是 01|2021
我了解等周的原理,但我希望年份从 2021 年 1 月 1 日开始
目的是使用这一天的间隔来确定周数
Week N0| End Date
1 | 01-01-2021
2 | 01-08-2021
5 | 01-29-2021
...
【问题讨论】:
-
显然你错过了 ISO 周的重点。 ISO 周总是从星期一开始,但您希望从星期五开始 - 没有发生。此外,ISO 年的第一周是 1 月 4 日或之前的星期一。这有时会导致意想不到的结果,因为 1 月的开始日期可能在上一个日历年的最后一周,或者 12 月的最后几天在下一个日历年的第一个日历周。
-
表达式
extract( 'week' from somedate)返回 ISO 周数,要保持一致,您需要extract('isoweek' from somedate)。所以对于你的数据:select extract('week' from date '2021-01-01'), extract('isoyear' from date '2021-01-01');正如@a_horse_with_no_name 所指示的,您需要计算任何其他星期的确定。