我想创建一个函数来获取一年中正确的周数。 我已经发布了here找到“本地”解决方案,但显然没有。
我尝试基于此 mysql example 创建函数
这是翻译成 postgresql 的代码:
CREATE OR REPLACE FUNCTION week_num_year(_date date)
RETURNS integer AS
$BODY$declare
_year integer;
begin
select date_part('year',_date) into _year;
return ceil((to_char(_date,'DDD')::integer+(to_char(('01-01-'||_year)::date,'D')::integer%7-7))/7);
end;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
但是它给出了错误的结果,有人可以帮助我吗?
我的配置:PostgreSQL 9.2
最佳答案
如果您想要正确的周数,请使用:
select extract(week from '2012-01-01'::date);
这将产生结果 52
,如果您查看日历,这是正确的。
现在,如果您真的想将周数定义为“从一年的第一天开始每 7 天”,那很好,尽管它与其他人使用的周数不匹配并且有一些奇怪的怪癖:
select floor((extract(doy from '2011-01-01'::date)-1)/7)+1;
顺便说一句,解析日期字符串并用字符串函数破解它们几乎总是一个非常糟糕的主意。
关于postgresql - 功能获取一年中正确的周数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14856412/