繁体   English   中英

Netezza一年中第n周的第一天

[英]First Day of nth Week of the Year in Netezza

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

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(如果您的SQL中一周的第一天是星期日,则为07-21)

您必须找到上一年的最后一个星期一的日期,并向其添加7 * {week-number}天

PS:别忘了记下2月29日的年份:)

事实证明,该解决方案实际上非常简单。 我不得不要求它想出一个解决方案。 在这里,第30周:

SELECT ('2019-01-01'::timestamp + (30-1)*7 - (DATE_PART('DOW', DATE '2019-01-01')-2))
-- Result: 2019-07-22

我基本上从一年的第一天开始,加上(n-1)*7 ,然后调整为一年的第一天,而不是星期一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM