oracle如何查当前日期所在周,Oracle查询当前日期对应周数

在Oracle中查询当前日期对应的SQL

oracle常见的日期格式有Date & Timestamp

其中Data常用的格式为:YYYY-MM-DD HH24-MI-SS

其中Timestamp常用的格式为:YYYY-MM-DD HH24-MI-SS.FFF

上述两种日期格式最明显的差异为TimeStamp格式更精确(精确至秒后三位小数)

回到标题,如何将当前日志转换为周数

常见的用法为 TO_CHAR(XXX,[type])

常用的type有

W 按照Oracle的标准周来返回周数,表示:为当前月份的第几周

WW

IW

D

FMWW

截取2019年3月的日期

5f2a06b60e5f91d66c6b05f8f4845f58.png用法演示---------W

当选择的日期为2019-03-1日

SELECT TO_Char (to_date('2019-03-01','YYYY-MM-DD'), 'YY-MM-W') AS WeekNo FROM DUAL;

对应 Query结果为:19-03-1(表示2019年4月28日为2019年4月份的第四周)

df8162d33ff51219e357a419c822bb6a.png

当选择的日期为2019-04-04日时,对应的结果仍为

147b270de1e0393c0804672af004f594.png

注意:从上面的举例可以看出W的实际含义为只针对一个月的时间来看

用法演示---------IW

以2019-03-04日为例(注意,3月4日为星期一)

SELECT TO_Char (to_date('2019-03-04','YYYY-MM-DD'), 'YY-MM-WW') AS WeekNo FROM DUAL;

0a75663377ef61e4886fad0a0addecd4.png

再以2019-03-05为例(注意,3月5日未星期二)

SELECT TO_Char (to_date('2019-03-05','YYYY-MM-DD'), 'YY-MM-WW') AS WeekNo FROM DUAL;

f06711c28ac221f59acc006bdda9145d.png

注意,已经变成了第10周

原因:WW采用的Oracle默认的标准周的计算方式,该标准周的统计逻辑为:每周二当前一周的开始,下周周一当作当前周的最后一天

用法演示---------WW

先以2019-03-03为例

SELECT TO_Char (to_date('2019-03-03','YYYY-MM-DD'), 'YY-MM-IW') AS WeekNo FROM DUAL;

b8bff37850592b79b32009f25bd88b9a.png

再取2019-03-04

SELECT TO_Char (to_date('2019-03-04','YYYY-MM-DD'), 'YY-MM-IW') AS WeekNo FROM DUAL;

f3bfd0eb44efb025fee4878e905b021e.png

IW即表示ISO标准周,及我们大众通常认知中的周一开始,到周日结束,算作一周

用法演示---------D

该用法并不常见,也简单说明下

返回是当前日期为该周的第几天,周数的计算逻辑为周日开始,记为1,到周六结束,记为7,一直循环

取03-05日

SELECT TO_Char (to_date('2019-03-05','YYYY-MM-DD'), 'YY-MM-D') AS WeekNo FROM DUAL;

db128076af8b61fcf414a1629717b29a.png

用法演示---------FMWW

该用法也并不常有,简单说明下,周数的计算逻辑为

从1月1日开始,每隔7天算一周 ,及1/1~1/7为第一周,1/8-1/14为第二周,依次类推

例如2019年第一个星期日为01-06日

SELECT TO_Char (to_date('2019-01-07','YYYY-MM-DD'), 'YY-MM-FMWW') AS WeekNo FROM DUAL;

对应的结果是:d7017a1018404f38b928b22a9bcf6035.png

以上为个人所理解的Oracle中常用的周数计算

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值