postgresql中一年中的本地周

时间:2016-09-29 09:02:36

标签: sql postgresql datepart

我必须为一些数据生成年度明智的每周报告。现在,当我按星期数汇总日期时,星期数是从创建日期的摘录中计算的。

现在问题是这两个查询都返回第52周。

SELECT EXTRACT(WEEK FROM TIMESTAMP '2006-01-01');
SELECT EXTRACT(WEEK FROM TIMESTAMP '2006-12-31');

第一个查询返回52(2005年第52周)和第二个查询返回52(2006年第52周)。这记录了行为。

但我想计算本地周数,第一次查询的结果应为1,其他查询将返回53.

2 个答案:

答案 0 :(得分:2)

您无法使用exctract()功能执行此操作,它只支持ISO周。

但是to_char()函数有an option

SELECT to_char(DATE '2006-01-01', 'WW')::int` --> 1
SELECT to_char(DATE '2006-12-31', 'WW')::int` --> 53

答案 1 :(得分:0)

对于日期2006-01-01,结束周从2005年开始,同样的问题是1999年。 克劳斯特EXTRACT(WEEK获得一周开始的年份没有结束。

您可以使用此代码:

SELECT floor(EXTRACT(doy FROM TIMESTAMP '2006-01-01')/7 + 1);

SELECT floor(EXTRACT(doy FROM TIMESTAMP '2006-12-31')/7 + 1);