前几篇聊了java时间相关的框架接口和类,这一篇来对oracle数据库中我常用的时间类SQL函数做一个小结
select to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss') from dual;
select to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'yyyy'),--2022
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'YYYY'),--2022
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'yyy'),--022
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'YYY'),--022
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'yy'),--22
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'YY'),--22
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'y'),--2
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'Y'),--2
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'MM'),--04
-- to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'M'),
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'mm'),--04
-- to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'m'),
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'dd'),--07
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'d'),--5
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'hh'),--03
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'HH'),--03
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'hh24'),--15
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'HH24'),--15
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'mi'),--24
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'MI'),--24
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'ss'),--12
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'SS'),--12
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd'),--2022-04-07
to_char(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'HH24:mi:ss'),--15:24:12
add_months(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'), 1),--2022-05-07 15:24:12 加1个月后的时间
last_day(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss')),--2022-04-30 15:24:12 本月最后一天
months_between(to_date('2022-01-09 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss')),
---2.93548387096774193548387096774193548387 隔的月数
--获取所在期间第一天,时分秒为0
trunc(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'day'),--2022-04-03 00:00:00 本周星期日
trunc(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'month'),--2022-04-01 00:00:00 本月初
trunc(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'q'),--2022-04-01 00:00:00 本季初日期
trunc(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'year'),--2022-01-01 00:00:00 本年初日期
--获取最近的某日期,时分秒为0
round(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'day'),--2022-04-10 00:00:00 最近星期日
round(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'month'),--2022-04-01 00:00:00 最近月初
round(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'q'),--2022-04-01 00:00:00 最近季初日期
round(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'),'year'),--2022-01-01 00:00:00 最近年初日期
--获取加指定时间的时间
trunc(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'))+(interval '25' year ),--2047-04-07 00:00:00 加25年
trunc(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'))+(interval '25' month ),--2024-05-07 00:00:00 加25月
trunc(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'))+(interval '25' day ),--2022-05-02 00:00:00 加25天
trunc(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'))+(interval '25' hour ),--2022-04-08 01:00:00 加25小时
trunc(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'))+(interval '25' minute ),--2022-04-07 00:25:00 加25分钟
trunc(to_date('2022-04-07 15:24:12', 'yyyy-MM-dd HH24:mi:ss'))+(interval '25' second )--2022-04-07 00:00:25 加25秒
from DUAL;
第一条SQL语句是常用的生成时间的函数,用于把自己指定的时间由字符串转为时间类型。
第二条SQL语句中包含了从时间中截取自己想要的某一部分(比如年月日,时分秒,时分12小时和24小时)的函数,函数结果就是我每行后边注释的内容,自己对照一下就明白截取部分了;另外还有对日期进行添加指定时间的函数以及类似java中Calendar的获取月初月末,星期日的功能的函数