'iyyy-iw'去周问题

本文详细解释了两种周数计算的标准方法:国际标准ISO8601与非ISO标准。ISO8601中,每年的第一周包含1月4日,并确保所有周至少有一天落在当前年份内;而非ISO标准则将新年第一天作为第一周的开始,无论星期几。文中通过具体日期示例展示了这两种方法的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

周是按照国际标准ISO 8601来表示的。以1月4日所在的那个星期为当年的第一个星期,
如:2005年1月1日是2004年53周,2005年1月3日是2005年01周。每个日历星期从星期一开始,星期日为第7天。

非iso: 永远以新年的第一天为第一周的星期一,第一周一定有七天,而且最后一周不一定有七天。
如:最后一天2009年12月30日是星期四,2010年1月1日确是2010年第一星期的星期一。
select to_char(to_date('2009-12-30', 'yyyy-mm-dd'), 'yyyy-ww') from dual union all
select to_char(to_date('2010-01-01', 'yyyy-mm-dd'), 'yyyy-ww') from dual union all
select to_char(to_date('2010-01-02', 'yyyy-mm-dd'), 'yyyy-ww') from dual

iso: 轮到星期几就是星期几,新年的第一天是星期几则为第一周的周期几,第一周不一定有七天,
而且一定会要最后一周满七天,如果这年最后一周未满七天,则这一周会持续到下一年的前几天。
如:最后一天2009年12月30日是星期四,则这周会持续到2010年1月3日(星期日)(此时用iyyy仍显示出2009),
2010年1月4日(此时用iyyy才显示出2010)才是2010年第一周的星期一,第一周持续到2010年1月10日(星期日) :加i
select to_char(to_date('2009-12-30', 'yyyy-mm-dd'), 'iyyy-iw') from dual union all
select to_char(to_date('2010-01-01', 'yyyy-mm-dd'), 'iyyy-iw') from dual union all
select to_char(to_date('2010-01-02', 'yyyy-mm-dd'), 'iyyy-iw') from dual union all
select to_char(to_date('2010-01-03', 'yyyy-mm-dd'), 'iyyy-iw') from dual union all
select to_char(to_date('2010-01-04', 'yyyy-mm-dd'), 'iyyy-iw') from dual union all
select to_char(to_date('2010-01-05', 'yyyy-mm-dd'), 'iyyy-iw') from dual union all
select to_char(to_date('2010-01-06', 'yyyy-mm-dd'), 'iyyy-iw') from dual union all
select to_char(to_date('2010-01-07', 'yyyy-mm-dd'), 'iyyy-iw') from dual union all
select to_char(to_date('2010-01-08', 'yyyy-mm-dd'), 'iyyy-iw') from dual union all
select to_char(to_date('2010-01-09', 'yyyy-mm-dd'), 'iyyy-iw') from dual union all
select to_char(to_date('2010-01-10', 'yyyy-mm-dd'), 'iyyy-iw') from dual

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值