在postgresql中创建包含年份和周数的表

时间:2013-11-17 16:30:11

标签: postgresql

我正在使用postgresql 8.2。 我希望能够创建一个包含年份的简单表格,并且该年份的所有周数最多为52。 像这样:

必须有一种有效的方法来做到这一点。 如果它需要扩展到任何一年,它应该动态列出年份的所有周数。

感谢任何帮助。 TIA

enter image description here

1 个答案:

答案 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