假设我有“ YYYY-MM”格式的月份和年份,如何查找该月份的周数?
例如2014-07有5周。
我认为这个想法是找到该月的最后一个日期,然后找到该日期的那一周的星期。如果我输入了正确的日期,以下代码将起作用,但是鉴于我的起点是YYYY-MM,我不确定如何重构日期/时间戳。
SELECT TO_CHAR(DATE_TRUNC('month', timestamp '2014-07-31')
+ INTERVAL '1 month' - INTERVAL '1 day', 'w' )
谢谢!
好吧,您需要定义“周”。一部分在一个月内的日历周称为“周”吗?您是否需要完整的7天时间?什么?几周从星期日还是星期一开始?
您要ISO周吗?根据一些当地的财务规定是几周?还有什么吗
您必须先明确定义问题,然后才能解决它。通常,简单地定义它可以帮助您解决问题。
给定d
格式YYYY-MM
和数据类型的日期,则为text
每月的第一天:
to_date(d, 'YYYY-MM');
然后获得最后一天,找到下个月并减去一天:
(to_date(d, 'YYYY-MM') + INTERVAL '1' MONTH) - INTERVAL '1' DAY
例如
regress=> SELECT (to_date('2014-07', 'YYYY-MM') + INTERVAL '1' MONTH) - INTERVAL '1' DAY;
?column?
---------------------
2014-07-31 00:00:00
(1 row)
从那里,您可以根据自己的应用定义所需的时间来确定星期,例如:
regress=> SELECT extract(week from (to_date('2014-07', 'YYYY-MM') + INTERVAL '1' MONTH) - INTERVAL '1' DAY) - extract(week from to_date('2014-07', 'YYYY-MM'));
?column?
----------
4
(1 row)
根据“周数”的一种定义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句