[英]MySQL: Get date based on the nth day of the week on a particular month/year
[英]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.