oracle 常用日期时间相关函数
程序员文章站
2024-02-14 09:45:52
...
目录
1、简述
本文主要描述与日期时间有关的常用函数及其用法示例。
2、日期时间格式
3、to_char 和 to_date函数
to_char:将日期转换为字符串;to_date:将字符串转换为日期。示例如下:
select to_char(to_date('20200324', 'yyyyMMdd'), 'yy') from dual; --20
select to_char(to_date('20200324', 'yyyyMMdd'), 'yyy') from dual; -- 020
select to_char(to_date('20200324', 'yyyyMMdd'), 'yyyy') from dual; --2020
-- 所在年的第几月(2位)
select to_char(to_date('20200324', 'yyyyMMdd'), 'mm') from dual; --03
select to_char(to_date('20200324', 'yyyyMMdd'), 'mon') from dual; --3月
select to_char(to_date('20200324', 'yyyyMMdd'), 'month') from dual; --3月
-- 所在月第几天 (2位)
select to_char(to_date('20200324', 'yyyyMMdd'), 'dd') from dual; --24
-- 所在那年的第几天(3位)
select to_char(to_date('20200324', 'yyyyMMdd'), 'ddd') from dual; --084
select to_char(to_date('20200324', 'yyyyMMdd'), 'dy') from dual; --星期二
select to_char(to_date('20200324', 'yyyyMMdd'), 'day') from dual; --星期二
select to_char(to_date('20200324', 'yyyyMMdd'), 'ddspth') from dual; --twenty-fourth
-- 所在年的第几季度(1-4)
select to_char(to_date('20200324','yyyyMMdd'),'q') from dual; -- 1
-- 所在年的第几周
select to_char(to_date('20200324','yyyyMMdd'),'ww') from dual; -- 12
-- 所在月的第几周
select to_char(to_date('20200324','yyyyMMdd'),'w') from dual; -- 4
select to_char(to_date('2020-03-24 13:06:33', 'yyyy-MM-dd hh24:mi:ss'), 'hh') from dual; --01
select to_char(to_date('2020-03-24 13:06:33', 'yyyy-MM-dd hh24:mi:ss'), 'hh24') from dual; --13
select to_char(to_date('2020-03-24 13:06:33', 'yyyy-MM-dd hh24:mi:ss'), 'mi') from dual; --06
select to_char(to_date('2020-03-24 13:06:33', 'yyyy-MM-dd hh24:mi:ss'), 'ss') from dual; --33
select to_char(to_date('2020-03-24 13:06:33', 'yyyy-MM-dd hh24:mi:ss'), 'yyyy-MM-dd hh24:mi:ss') from dual; --2020-03-24 13:06:33
4、trunc函数
-- 获取日期(不需要时分秒)
select trunc(to_date('2020-03-24 13:06:33', 'yyyy-MM-dd hh24:mi:ss')) from dual; -- 2020-03-24
-- 获取日期所在年第一天的日期
select trunc(to_date('2020-03-24 13:06:33', 'yyyy-MM-dd hh24:mi:ss'), 'year') from dual; -- 2020-01-01
select trunc(to_date('2020-03-24 13:06:33', 'yyyy-MM-dd hh24:mi:ss'), 'y') from dual; -- 2020-01-01
-- 获取日期所在月第一天的日期
select trunc(to_date('2020-03-24 13:06:33', 'yyyy-MM-dd hh24:mi:ss'), 'month') from dual; -- 2020-03-01
select trunc(to_date('2020-03-24 13:06:33', 'yyyy-MM-dd hh24:mi:ss'), 'mon') from dual; -- 2020-03-01
-- 获取日期所在星期日的日期(星期日为每周的第一天)
select trunc(to_date('2020-03-24 13:06:33', 'yyyy-MM-dd hh24:mi:ss'), 'day') from dual; -- 2020-03-22
select trunc(to_date('2020-03-24 13:06:33', 'yyyy-MM-dd hh24:mi:ss'), 'd') from dual; -- 2020-03-22
5、其他函数
-- 获取某一日期所在的星期
select to_char(to_date('2020-03-24', 'yyyy-MM-dd'), 'day') from dual; --星期二
-- 获取两日期之间的天数
select floor(to_date('20200301','yyyyMMdd')-to_date('20200206','yyyyMMdd')) from dual; -- 24
select floor(to_date('20200206','yyyyMMdd')-to_date('20200301','yyyyMMdd')) from dual; -- -24
-- 指定日期月份+n
select add_months(to_date('20200229','yyyyMMdd'),3) from dual; -- 2020-05-31
select add_months(to_date('20200304','yyyyMMdd'),2) from dual; -- 2020-05-04
-- 指定日期所在月份的最后一天
select last_day(to_date('20200229','yyyyMMdd')) from dual; -- 2020-02-29
select last_day(to_date('20200304','yyyyMMdd')) from dual; -- 2020-03-31
-- 指定日期后第一个星期中的某一天的日期(星期日--星期六 1--7)
select next_day(to_date('20200202','yyyyMMdd'), 5) from dual; -- 2020-02-06 (2020年02月02日(星期日)后第一个星期四的日期)
select next_day(to_date('20200202','yyyyMMdd'), 1) from dual; -- 2020-02-09 (2020年02月02日(星期日)后第一个星期日的日期)
-- 获取日期中最大的日期
select greatest(to_date('2020-03-24', 'yyyy-MM-dd'),to_date('2020-02-29', 'yyyy-MM-dd'),to_date('2020-02-24', 'yyyy-MM-dd')) from dual; --2020-03-24
6、其他常用日期示例
-- 获取日期所在年第一天日期
select trunc(to_date('20200324','yyyyMMdd'), 'year') from dual; -- 2020-01-01
-- 获取日期所在年最后一天日期
select last_day(add_months(trunc(to_date('20200324','yyyyMMdd'),'year'),11)) from dual; -- 2020-12-31
-- 获取日期所在月第一天日期
select trunc(to_date('20200324','yyyyMMdd'), 'month') from dual; -- 2020-03-01
-- 获取日期所在月最后一天日期
select last_day(trunc(to_date('20200324','yyyyMMdd'), 'month')) from dual; -- 2020-03-31
-- 获取日期所在星期第一天日期(星期日)
select trunc(to_date('20200324','yyyyMMdd'), 'day') from dual; -- 2020-03-22
-- 获取日期所在星期最后一天日期(星期六)
select trunc(to_date('20200324','yyyyMMdd'), 'day')+6 from dual; -- 2020-03-28
-- 获取日期所在季度第一天的日期
select trunc(to_date('20200324','yyyyMMdd'), 'q') from dual; -- 2020-01-01
-- 获取日期所在季度最后一天的日期
select last_day(add_months(trunc(to_date('20200324','yyyyMMdd'),'q'),2)) from dual; -- 2020-03-31