Netezza 一年中第 n 周的第一天

Posted

技术标签:

【中文标题】Netezza 一年中第 n 周的第一天【英文标题】:First Day of nth Week of the Year in Netezza 【发布时间】:2019-07-22 20:55:45 【问题描述】:

如何找到一年中nth 周的第一天的日期?例如,以下所有查询:

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获得一周的第一天:改变一年

PHP DATE 如何取得当月的第一天和最后一天

所在周的第一天

sqlServer 求当前周的第一天和最后一天,当前月的第一天和最后一天,前三个月的第一天和今天

如何将星期天设置为excel对周计算的第一天。