TypechoJoeTheme

旁逸斜出

yan

读史使人明智,读诗使人灵秀,数学使人周密,科学使人深刻,伦理学使人庄重,逻辑修辞之学使人善辩:凡有所学,皆成性格。
类目归类

Oracle数据库日期格式处理

yan
2021-02-27
/
0 评论
/
95 阅读
/
正在检测是否收录...
02/27

基本格式

系统时间
SELECT sysdate FROM dual;  

格式转换

字符串转日期

SELECT to_date('2021/2/27 15:52:15', 'YYYY-MM-DD HH24:MI:SS') from dual;   --2021/2/27 15:52:15
SELECT to_date('2021-02-27 15:52:15', 'YYYY-MM-DD HH24:MI:SS') from dual;  --2021/2/27 15:52:15
SELECT to_date('2021-02', 'YYYY-MM') from dual;   --2021/2/1
SELECT to_date('2021', 'YYYY') from dual;    --2021/2/1

如果省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。 
如果输入的日期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到日。 
同样,忽略了DD参数,Oracle会采用1作为日的默认值,也就是说会取整到月(2021/2/1)。 
但是,不要被这种“惯性”所迷惑,如果忽略MM参数,Oracle并不会取整到年(2021/1/1),而是取整到系统当前月

日期转字符串

SELECT to_char(sysdate,'yyyy-mm-dd') FROM dual;  --2021-02-27
SELECT to_char(sysdate,'dd-mm-yyyy') FROM dual;  --27-02-2021

其他计算命令

计算本年天数

SELECT add_months(trunc(sysdate,'yyyy'),12)-trunc(sysdate,'yyyy') FROM dual;

1.oracle的时间差是以天数为单位的
2.add_months函数有两个参数,第一个参数是日期,第二个参数是对日期进行加减的数字(以月为单位的)
3.trunc函数,可以截取日期,也可以截取数字
TRUNC(date[,fmt])
其中:
date 一个日期值;fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去
下面是该函数的使用情况:
trunc(sysdate,'yyyy') --返回当年第一天.
trunc(sysdate,'mm') --返回当月第一天.
trunc(sysdate,'d') --返回当前星期的第一天.

判断闰年,LAST_DAY函数返回指定日期对应月份的最后一天 
SELECT to_char(last_day(to_date(2020 || '02', 'yyyymm')), 'dd') FROM dual --29则为闰年
某月的第一天,最后一天
SELECT trunc(sysdate,'mm'),last_day(trunc(sysdate,'mm')) FROM dual;

前一个月最后一天
SELECT trunc(to_date('20210131','yyyy-mm-dd'),'mm')-1 FROM dual;
SELECT to_date(substr('20210131',1,6),'yyyy-mm')-1 FROM dual;
Oracle
朗读
赞 · 0
评论 (0)