欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

oracle 常用日期时间相关函数

程序员文章站 2024-02-14 09:45:52
...

目录

1、简述

2、日期时间格式

3、to_char 和 to_date函数

4、trunc函数

5、其他函数

6、其他常用日期示例


1、简述

    本文主要描述与日期时间有关的常用函数及其用法示例。

2、日期时间格式

oracle 常用日期时间相关函数

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

 

相关标签: 数据库