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