Oracle时间日期计算--计算某一日期为一年中的第几周
Oracle时间日期计算--计算某一日期为一年中的第几周
select
to_char(sysdate-10,'yyyymmdd')||':iw:'||to_char(sysdate-10,'iw')||':ww:'||to_char(sysdate-10,'ww')||':w:'||to_char(sysdate-10,'w')||':D周:'||to_char(sysdate-10,'D') d1,
to_char(sysdate-09,'yyyymmdd')||':iw:'||to_char(sysdate-09,'iw')||':ww:'||to_char(sysdate-09,'ww')||':w:'||to_char(sysdate-09,'w')||':D周:'||to_char(sysdate-09,'D') d2,
to_char(sysdate-08,'yyyymmdd')||':iw:'||to_char(sysdate-08,'iw')||':ww:'||to_char(sysdate-08,'ww')||':w:'||to_char(sysdate-08,'w')||':D周:'||to_char(sysdate-08,'D') d3,
to_char(sysdate-07,'yyyymmdd')||':iw:'||to_char(sysdate-07,'iw')||':ww:'||to_char(sysdate-07,'ww')||':w:'||to_char(sysdate-07,'w')||':D周:'||to_char(sysdate-07,'D') d4,
to_char(sysdate-06,'yyyymmdd')||':iw:'||to_char(sysdate-06,'iw')||':ww:'||to_char(sysdate-06,'ww')||':w:'||to_char(sysdate-06,'w')||':D周:'||to_char(sysdate-06,'D') d5,
to_char(sysdate-05,'yyyymmdd')||':iw:'||to_char(sysdate-05,'iw')||':ww:'||to_char(sysdate-05,'ww')||':w:'||to_char(sysdate-05,'w')||':D周:'||to_char(sysdate-05,'D') d6,
to_char(sysdate-04,'yyyymmdd')||':iw:'||to_char(sysdate-04,'iw')||':ww:'||to_char(sysdate-04,'ww')||':w:'||to_char(sysdate-04,'w')||':D周:'||to_char(sysdate-04,'D') d7,
to_char(sysdate-03,'yyyymmdd')||':iw:'||to_char(sysdate-03,'iw')||':ww:'||to_char(sysdate-03,'ww')||':w:'||to_char(sysdate-03,'w')||':D周:'||to_char(sysdate-03,'D') d8,
to_char(sysdate-02,'yyyymmdd')||':iw:'||to_char(sysdate-02,'iw')||':ww:'||to_char(sysdate-02,'ww')||':w:'||to_char(sysdate-02,'w')||':D周:'||to_char(sysdate-02,'D') d9,
to_char(sysdate-01,'yyyymmdd')||':iw:'||to_char(sysdate-01,'iw')||':ww:'||to_char(sysdate-01,'ww')||':w:'||to_char(sysdate-01,'w')||':D周:'||to_char(sysdate-01,'D') d1,
to_char(sysdate-00,'yyyymmdd')||':iw:'||to_char(sysdate-00,'iw')||':ww:'||to_char(sysdate-00,'ww')||':w:'||to_char(sysdate-00,'w')||':D周:'||to_char(sysdate-00,'D') d2,
to_char(sysdate+01,'yyyymmdd')||':iw:'||to_char(sysdate+01,'iw')||':ww:'||to_char(sysdate+01,'ww')||':w:'||to_char(sysdate+01,'w')||':D周:'||to_char(sysdate+01,'D') d3,
to_char(sysdate+02,'yyyymmdd')||':iw:'||to_char(sysdate+02,'iw')||':ww:'||to_char(sysdate+02,'ww')||':w:'||to_char(sysdate+02,'w')||':D周:'||to_char(sysdate+02,'D') d4,
to_char(sysdate+03,'yyyymmdd')||':iw:'||to_char(sysdate+03,'iw')||':ww:'||to_char(sysdate+03,'ww')||':w:'||to_char(sysdate+03,'w')||':D周:'||to_char(sysdate+03,'D') d5,
to_char(sysdate+04,'yyyymmdd')||':iw:'||to_char(sysdate+04,'iw')||':ww:'||to_char(sysdate+04,'ww')||':w:'||to_char(sysdate+04,'w')||':D周:'||to_char(sysdate+04,'D') d6,
to_char(sysdate+05,'yyyymmdd')||':iw:'||to_char(sysdate+05,'iw')||':ww:'||to_char(sysdate+05,'ww')||':w:'||to_char(sysdate+05,'w')||':D周:'||to_char(sysdate+05,'D') d7,
to_char(sysdate+06,'yyyymmdd')||':iw:'||to_char(sysdate+06,'iw')||':ww:'||to_char(sysdate+06,'ww')||':w:'||to_char(sysdate+06,'w')||':D周:'||to_char(sysdate+06,'D') d8,
to_char(sysdate+07,'yyyymmdd')||':iw:'||to_char(sysdate+07,'iw')||':ww:'||to_char(sysdate+07,'ww')||':w:'||to_char(sysdate+07,'w')||':D周:'||to_char(sysdate+07,'D') d9,
to_char(sysdate+08,'yyyymmdd')||':iw:'||to_char(sysdate+08,'iw')||':ww:'||to_char(sysdate+08,'ww')||':w:'||to_char(sysdate+08,'w')||':D周:'||to_char(sysdate+08,'D') d1,
to_char(sysdate+09,'yyyymmdd')||':iw:'||to_char(sysdate+09,'iw')||':ww:'||to_char(sysdate+09,'ww')||':w:'||to_char(sysdate+09,'w')||':D周:'||to_char(sysdate+09,'D') d2,
to_char(sysdate+10,'yyyymmdd')||':iw:'||to_char(sysdate+10,'iw')||':ww:'||to_char(sysdate+10,'ww')||':w:'||to_char(sysdate+10,'w')||':D周:'||to_char(sysdate+10,'D') d3,
to_char(sysdate+11,'yyyymmdd')||':iw:'||to_char(sysdate+11,'iw')||':ww:'||to_char(sysdate+11,'ww')||':w:'||to_char(sysdate+11,'w')||':D周:'||to_char(sysdate+11,'D') d4,
to_char(sysdate+12,'yyyymmdd')||':iw:'||to_char(sysdate+12,'iw')||':ww:'||to_char(sysdate+12,'ww')||':w:'||to_char(sysdate+12,'w')||':D周:'||to_char(sysdate+12,'D') d5,
to_char(sysdate+13,'yyyymmdd')||':iw:'||to_char(sysdate+13,'iw')||':ww:'||to_char(sysdate+13,'ww')||':w:'||to_char(sysdate+13,'w')||':D周:'||to_char(sysdate+13,'D') d6,
to_char(sysdate+14,'yyyymmdd')||':iw:'||to_char(sysdate+14,'iw')||':ww:'||to_char(sysdate+14,'ww')||':w:'||to_char(sysdate+14,'w')||':D周:'||to_char(sysdate+14,'D') d7,
to_char(sysdate+15,'yyyymmdd')||':iw:'||to_char(sysdate+15,'iw')||':ww:'||to_char(sysdate+15,'ww')||':w:'||to_char(sysdate+15,'w')||':D周:'||to_char(sysdate+15,'D') d8
from dual;
20200317:iw:12:ww:11:w:3:D周:3
20200318:iw:12:ww:12:w:3:D周:4
20200319:iw:12:ww:12:w:3:D周:5
20200320:iw:12:ww:12:w:3:D周:6
20200321:iw:12:ww:12:w:3:D周:7
20200322:iw:12:ww:12:w:4:D周:1
20200323:iw:13:ww:12:w:4:D周:2
20200324:iw:13:ww:12:w:4:D周:3
20200325:iw:13:ww:13:w:4:D周:4
20200326:iw:13:ww:13:w:4:D周:5
20200327:iw:13:ww:13:w:4:D周:6
20200328:iw:13:ww:13:w:4:D周:7
20200329:iw:13:ww:13:w:5:D周:1
20200330:iw:14:ww:13:w:5:D周:2
20200331:iw:14:ww:13:w:5:D周:3
20200401:iw:14:ww:14:w:1:D周:4
20200402:iw:14:ww:14:w:1:D周:5
20200403:iw:14:ww:14:w:1:D周:6
20200404:iw:14:ww:14:w:1:D周:7
20200405:iw:14:ww:14:w:1:D周:1
20200406:iw:15:ww:14:w:1:D周:2
20200407:iw:15:ww:14:w:1:D周:3
20200408:iw:15:ww:15:w:2:D周:4
20200409:iw:15:ww:15:w:2:D周:5
20200410:iw:15:ww:15:w:2:D周:6
20200411:iw:15:ww:15:w:2:D周:7
select to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyiw') as week, --oracle求当年的第几周 #常用,但是有一个问题,比如20181231是周一,但是却计算结果为201801,即2018第一周内。
to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyww') as week2, --oracle求当年的第几周
to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyy') as year, --oracle求第几年
to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyymm') as month, --oracle求当年的第几月
to_char(TO_DATE('20110401', 'YYYYMMDD'), 'yyyyW') as quarter, -- oracle求当年的第几季度
to_char(TO_DATE('20110401', 'YYYYMMDD'), 'yyyyw') as quarter, -- oracle求当年的第几季度
to_char(TO_DATE('20110401', 'YYYYMMDD'), 'yyyyq') as quarter -- oracle求当年的第几季度
from dual;
我自己实现的脚本:
select
T31267.CREATED_DATE as F31265,
(select to_char(to_date(T31267.CREATED_DATE,'yyyy-mm-dd'),'yyyyiw') from dual) as week
from LEAP.HMDM_DM_DLR_CLUE T31267
总结:
select to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyiw') as week, --oracle求当年的第几周 #常用,但是有一个问题,比如20181231是周一,但是却计算结果为201801,即2018第一周内。
to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyww') as week2, --oracle求当年的第几周
to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyy') as year, --oracle求第几年
to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyymm') as month, --oracle求当年的第几月
to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyddd') as day, --oracle求当年的第几天
to_char(TO_DATE('20110401', 'YYYYMMDD'), 'yyyyq') as quarter -- oracle求当年的第几季度
from dual
ww Same day of the week as the first day of the year 按年度1月1日的第一天为每周第一天
iw Same day of the week as the first day of the ISO week, which is Monday 每周一
w Same day of the week as the first day of the month 按月份1日的第一天作为每周第一天
这3个参数均为取每周第一天,区别如下:
ww,按每年的1月1日为第一周第一天,1月8日为第二周第一天……依此类推。
2010-1-1为2010年第一周第一天,取第一周的第一天,仍然为2010-1-1
SQL> select trunc(date'2010-1-1','w') from dual;
TRUNC(DATE'2010-1-1','W')
-------------------------
2010-1-1
2010-1-6为2010年第一周第六天,取第一周的第一天,为2010-1-1
SQL> select trunc(date'2010-1-6','w') from dual;
TRUNC(DATE'2010-1-6','W')
-------------------------
2010-1-1
2010-1-9为2010年第二周第二天,取这一周的第一天,为2010-1-8
SQL> select trunc(date'2010-1-9','w') from dual;
TRUNC(DATE'2010-1-9','W')
-------------------------
2010-1-8
w与ww功能类似,不过它是按每月的1日为每周第一天,例如1日为当月第一周第一天,8日为第二周第一天……依此类推。
那也就是说,1月份的参数w与ww用trunc函数的结果应该是一致的。
2010-3-1为当月第一周第一天,因此结果为2010-3-1
SQL> select trunc(date'2010-3-1','w') from dual;
TRUNC(DATE'2010-3-1','W')
-------------------------
2010-3-1
2010-3-8为当月第二周第一天,第二周第一天为2010-3-8
SQL> select trunc(date'2010-3-8','w') from dual;
TRUNC(DATE'2010-3-8','W')
-------------------------
2010-3-8
2010-3-9为当月第二周第二天,2010-3-8为第二周第一天
SQL> select trunc(date'2010-3-9','w') from dual;
TRUNC(DATE'2010-3-9','W')
-------------------------
2010-3-8
iw,不受月份与年份的影响,直接取日期参数的周一。
SQL> select trunc(date'2010-3-9','iw') from dual;
TRUNC(DATE'2010-3-9','IW')
--------------------------
2010-3-8
参考:
TRUNC(number,num_digits)
Number 需要截尾取整的数字。
Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。如果Num_digits为正数,则截取小数点后Num_digits位;如果为负数,则先保留整数部分,然后从个位开始向前数,并将遇到的数字都变为0。
TRUNC()函数在截取时不进行四舍五入,直接截取。
针对数字的案例,如:
select trunc(123.458) from dual --123
select trunc(123.458,0) from dual --123
select trunc(123.458,1) from dual --123.4
select trunc(123.458,-1) from dual --120
select trunc(123.458,-4) from dual --0
select trunc(123.458,4) from dual --123.458
select trunc(123) from dual --123
select trunc(123,1) from dual --123
select trunc(123,-1) from dual --120
针对日期的案例,如:
select trunc(sysdate) from dual --2017/6/13 返回当天的日期
select trunc(sysdate,'yyyy') from dual --2017/1/1 返回当年第一天.
select trunc(sysdate,'mm') from dual --2017/6/1 返回当月第一天.
select trunc(sysdate,'d') from dual --2017/6/11 返回当前星期的第一天(以周日为第一天).
select trunc(sysdate,'dd') from dual --2017/6/13 返回当前年月日
select trunc(sysdate,'hh') from dual --2017/6/13 13:00:00 返回当前小时
select trunc(sysdate,'mi') from dual --2017/6/13 13:06:00 返回当前分钟
其他优秀链接推荐:
https://www.2cto.com/database/201302/191827.html
https://www.oschina.net/question/44870_3710
分类: oracle
Oracle时间日期计算--计算某一日期为一年中的第几周的更多相关文章
- C#获取指定日期为一年中的第几周
/// <summary> /// 获取指定日期,在为一年中为第几周 /// </summary> /// <param name="dt">指 ...
- C#指定日期为一年中的第几周
/// <summary> /// 获取指定时间在为一年中为第几周 /// </summary> /// <param name="dt">指定 ...
- Oracle--计算某一日期为一年中的第几周
我自己实现的脚本: select T31267.CREATED_DATE as F31265, (select to_char(to_date(T31267.CREATED_DATE,'yyyy-mm ...
- C#计算当前日期为一年中的第几周
方法一: private int WeekOfYear(string date) { DateTime curDay = Convert.ToDateTime(date); i ...
- Java日期时间API系列21-----Jdk8中java.time包中的新的日期时间API类,xk-time时间转换,计算,格式化,解析的工具
通过工作之余,对Java8中java.time包源码的不断学习,使用和总结,开发了xk-time,初步完成,欢迎试用和提出建议! xk-time xk-time is a datetime conve ...
- 【Oracle】Oracle时间日期格式
to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,& ...
- ORACLE时间日期格式使用总结(参考网上资料汇总)
Oracle时间日期操作 sysdate+(5/24/60/60) 在系统时间基础上延迟5秒 sysdate+5/24/60 在系统时间基础上延迟5分钟 sysdate+5/24 在系统时间基础上延迟 ...
- Oracle时间日期函数
ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 ...
- 用Java计算某个日期100天后的日期
用Java计算日期时间,首先考虑到时间类,Java中提供的和时间日期相关的类里,有一个Calendar类,可以获取某个时间日期. 计算某个日期100天后的日期,思路如下: 1.先设定时间,例如2017 ...
随机推荐
- Presto单机/集群模式安装笔记
Presto单机/集群模式安装笔记 一.安装环境 二.安装步骤 三.集群模式安装: 3.1 集群模式修改配置部分 3.1.1 coordinator 节点配置. Node172配置 3.1.2 nod ...
- 使用mysql创建自己的物化视图
物化视图,它是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,从而快速的得到结果.物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查 ...
- Tornado 简述
前言 python 旗下,群英荟萃,豪杰并起.单是用于 web 开发的,就有 webpy.web2py.bottle.pyramid.zope2.flask.tornado.django 等等,不一而 ...
- JavaScript两道例题
1.有一个卡车司机肇事后想逃跑,但是被三个人看见其车牌号码,但是没有看全.一号说:车牌的前两位是一样的,二号说:车牌的后两位是一 样的,但是与前两位不一样,三号说:车牌是一个数字的平方,请计算车辆号牌 ...
- 关于使用fastjson出现的问题:com.alibaba.fastjson.JSONException: syntax error, expect {, actual string, pos 1, fastjson-version 1.2.44
先说下需求:是从redis中根据keys批量获取数据集合,再通过fastjson转为对象集合 代码如下: 在postman测试后,出现错误如下: 刚开始以为是使用fstjson方法不对,后面先通过打断 ...
- Matplotlib数据可视化(5):柱状图与直方图
柱状图和直方图是两种非常类似的统计图,区别在于: 直方图展示数据的分布,柱状图比较数据的大小. 直方图X轴为定量数据,柱状图X轴为分类数据.因此,直方图上的每个条形都是不可移动的,X轴上的区间是连 ...
- js动态创建svg与use 使用iconfont symbol
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 树莓派3b+ 交叉编译 及升级 kernel
安装 gcc pkg 等工具sudo apt-get install build-essential git 官方介绍 https://www.raspberrypi.org/documentatio ...
- mybatis进阶案例之多表查询
mybatis进阶案例之多表查询 一.mybatis中表之间的关系 在数据库中,实体型之间的关系主要有如下几种: 1.一对一 如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之 ...
- C语言程序设计(三) 简单的算术运算和表达式
第三章 简单的算术运算和表达式 算数运算符:一元.二元.三元(条件运算符) 1/2是整型除法,1.0/2是浮点数除法 求余运算(%)限定参与运算的两个操作数必须为整数,不能对两个实型数据进行求余运算 ...