新年的第一周从哪天开始算起?一周从周日开始,还是周一开始?

不同标准下,第几周,周第几天的值,结果会不一样。比如:orcale中to_char(date,YYIW) 53…

结论先行

  1. 现代,各国都是一周七天。
  2. 在国际标准与中国标准里,为包含1月4日的周为第一周,所以有跨年的周。
  3. 在国际标准与中国标准里,周一为周的第一天。

相关标准

ISO 8601:数据存储和交换形式 信息交换 日期和时间的表示方法

  • 每个日历星期从星期一开始,星期日为第7天。
  • 第一个日历星期有以下四种等效说法:
    • 本年度第一个星期四所在的星期;
    • 1月4日所在的星期;
    • 本年度第一个至少有4天在同一星期内的星期;
    • 星期一在去年12月29日至今年1月4日以内的星期;

GB/T 7408:数据元和交换格式 信息交换 日期和时间表示法

可以在 全国标准信息公共服务平台 里搜索 GB/T 7408,看目前现行标准版本。但基本采标关系为等同 ISO 8601。

现像与问题

  • 在系统里的计算周数函数中,第几周,周第几天的值,结果会不一样。比如Oracle 数据库,见下面示例。
  • 纸质台历/手机日历的显示效果,也有差异。比如有周日在前,也有周一在前的。
SQL> select substr(to_char(to_date(20210103,'yyyymmdd'),'YYYYIW'),-4) as YYIW from dual;

YYIW
----
2153

SQL> select substr(to_char(to_date(20210103,'yyyymmdd'),'IYYYIW'),-4) as YYIW from dual;

YYIW
----
2053

2021年1月3日应该是2020年第53周,所以要使用IYYYIW才正确。

select to_char(SYSDATE,'IYYYIW') as IW from dual;

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注