【发布时间】:2016-03-07 03:05:33
【问题描述】:
我想提取周数为:
2015-52
从格式如下的日期开始:
2015-12-27
如何在 postgres 中执行此操作?
我的周数是从星期一到星期日计算的。
【问题讨论】:
标签: time postgresql-9.1
我想提取周数为:
2015-52
从格式如下的日期开始:
2015-12-27
如何在 postgres 中执行此操作?
我的周数是从星期一到星期日计算的。
【问题讨论】:
标签: time postgresql-9.1
要以单个字符值获取年份和星期,请使用to_char()
select to_char(current_date, 'IYYY-IW');
IW 返回年份和周数,defined in the ISO standard 和 IYYY 返回相应的年份(可能是前一年)。
如果您需要年份和周数作为数字,请使用extract
select extract('isoyear' from current_date) as year,
extract('week' from current_date) as week;
【讨论】:
IW 时,还需要使用等值年IYYY - 我会解决这个问题
我已经这样做了
extract(week from cast(current_date as date))
extract(year from cast(current_date as date))
【讨论】:
cast(current_date as date)可以简化为current_date
与@a_horse_with_no_name 相同,但要注意extract('isoyear' from current_date) 和extract('year' from current_date) 之间有一点区别,如果current_date 在新年的第0 周内(去年的最后一周(53)),尤其是当你也提取week。
例如:
以下输出是2020 而不是2021
select EXTRACT('isoyear' from to_timestamp('2021-01-02 17:37:27', 'YYYY-MM-DD hh24:mn:ss')) as year
下面的输出是2021
select EXTRACT('year' from to_timestamp('2021-01-02 17:37:27', 'YYYY-MM-DD hh24:mn:ss')) as year
【讨论】: