我正在使用postgresql 8.2。 我希望能够创建一个包含年份的简单表格,并且该年份的所有周数最多为52。 像这样:
必须有一种有效的方法来做到这一点。 如果它需要扩展到任何一年,它应该动态列出年份的所有周数。
感谢任何帮助。 TIA
答案 0 :(得分:1)
据我所知,PostgreSQL没有一个函数可以返回一年的周数。所以我想最好的方法就是创建这个功能:
CREATE OR REPLACE FUNCTION weeks_in_year(aYear integer) RETURNS integer AS
$$
DECLARE
vW integer;
BEGIN
vW := date_part('week', (aYear::text || '-12-31')::date);
-- When the week is the first, the year has 52 weeks.
RETURN CASE WHEN vW = 1 THEN 52 ELSE vW END;
END
$$
language 'plpgsql';
然后您可以将此函数与generate_series一起使用来获取数据
select 2013 AS year,generate_series(1, weeks_in_year(2013)) AS week
如果你必须创建一个表,你可以使用
SELECT 2013 AS year,generate_series(1, weeks_in_year(2013)) AS week INTO my_table