我必须为一些数据生成年度明智的每周报告。现在,当我按星期数汇总日期时,星期数是从创建日期的摘录中计算的。
现在问题是这两个查询都返回第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.
答案 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);