Netezza 一年中第 n 周的第一天
Posted
技术标签:
【中文标题】Netezza 一年中第 n 周的第一天【英文标题】:First Day of nth Week of the Year in Netezza 【发布时间】:2019-07-22 20:55:45 【问题描述】:如何找到一年中n
th 周的第一天的日期?例如,以下所有查询:
SELECT DATE_PART('WEEK', '2019-07-22 01:12:07'::timestamp);
SELECT DATE_PART('WEEK', '2019-07-23 01:12:07'::timestamp);
SELECT DATE_PART('WEEK', '2019-07-24 01:12:07'::timestamp);
给 30,因为这三个日期是 2019 年的第 30 周。
我的问题是如何做相反的事情。在我的 SQL 版本中,周从星期一开始(如果您从星期日开始,这不是问题 - 我可以进行调整)因此第 30 周的第一天是 2019-07-22(今天,也就是星期一)。如何输入周数 30 并获取该周的第一天,即 2019-07-22(或 07-21,如果您的 SQL 中一周的第一天是星期日)
【问题讨论】:
【参考方案1】:你必须找到上一年最后一个星期一的日期,然后加上 7 * week-number 天
P.S:不要忘记计算 2 月 29 日的年份 :)
【讨论】:
【参考方案2】:事实证明,解决方案实际上非常简单。我不得不问它想出一个我猜的解决方案。这是第 30 周:
SELECT ('2019-01-01'::timestamp + (30-1)*7 - (DATE_PART('DOW', DATE '2019-01-01')-2))
-- Result: 2019-07-22
我基本上是从年初一开始,加(n-1)*7
,调整为年初一不是周一。
【讨论】:
以上是关于Netezza 一年中第 n 周的第一天的主要内容,如果未能解决你的问题,请参考以下文章
Excel中如何计算日期所在的这年的第几周,以周一作为一周的第一天
使用NSDateComponents获得一周的第一天:改变一年