Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 研究生12月31日的年度周数不一致。。。1、52或53_Postgresql_Date - Fatal编程技术网

Postgresql 研究生12月31日的年度周数不一致。。。1、52或53

Postgresql 研究生12月31日的年度周数不一致。。。1、52或53,postgresql,date,Postgresql,Date,在按周分组的实验中,我发现12月31日在研究生中返回的一年中的一周因年而异,结果出乎意料(至少对我来说是这样)。结果通常是52(良好),有时是53,通常是1 53我可以理解,它是根据一周中的某一天来计算周数的,所以在这一天计算的结果可能是53周。不太好,但可以理解 但为什么博士后经常说12月31日是一年中的第一周?这有什么意义 例如: SELECT EXTRACT(WEEK FROM DATE '2000-12-31') AS "Week",'Week2000' AS "Year"

在按周分组的实验中,我发现12月31日在研究生中返回的一年中的一周因年而异,结果出乎意料(至少对我来说是这样)。结果通常是52(良好),有时是53,通常是1

53我可以理解,它是根据一周中的某一天来计算周数的,所以在这一天计算的结果可能是53周。不太好,但可以理解

但为什么博士后经常说12月31日是一年中的第一周?这有什么意义

例如:

      SELECT EXTRACT(WEEK FROM DATE '2000-12-31') AS "Week",'Week2000' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2001-12-31') AS "Week",'Week2001' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2002-12-31') AS "Week",'Week2002' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2003-12-31') AS "Week",'Week2003' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2004-12-31') AS "Week",'Week2004' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2005-12-31') AS "Week",'Week2005' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2006-12-31') AS "Week",'Week2006' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2007-12-31') AS "Week",'Week2007' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2008-12-31') AS "Week",'Week2008' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2009-12-31') AS "Week",'Week2009' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2010-12-31') AS "Week",'Week2010' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2011-12-31') AS "Week",'Week2011' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2012-12-31') AS "Week",'Week2012' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2013-12-31') AS "Week",'Week2013' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2014-12-31') AS "Week",'Week2014' AS "Year"
UNION SELECT EXTRACT(WEEK FROM DATE '2015-12-31') AS "Week",'Week2015' AS "Year"
ORDER BY "Year"
结果:

Week   Year
-----  ---------
52     Week2000
1      Week2001
1      Week2002
1      Week2003
53     Week2004
52     Week2005
52     Week2006
1      Week2007
1      Week2008
53     Week2009
52     Week2010
52     Week2011
1      Week2012
1      Week2013
1      Week2014
53     Week2015
我已经通过指定完整的时间戳(而不仅仅是日期)进行了测试,无论时间戳中包含的时间是什么,结果都是一样的

12月29日和30日也可能产生1、52或53个结果


12月27日和28日可能导致52或53。PostgreSQL使用ISO8601定义。这意味着几周从周一开始,一年中的第一周是1月4日。例如,如果1月4日是星期二,12月31日是该年的第1周。

是定义:ISO 8601
根据定义,ISO周从周一开始,一年的第一周包含该年的1月4日。
你可以把它想象成一个财政年度。ISO8601年不是从1月1日开始的——它从任何一周开始,从周一开始,包含1月4日。