关于时间函数的操作
Oracle中时间函数逐步整理一下,以往只查询网上的用法,自己整理的才是自己的
- 转换 to_char、to_date : 转换格式时间,以时间2019-09-02 13:45:12为例
select to_char(to_date('2019-09-02 13:45:12','yyyy-mm-dd hh24:mi:ss'),'yy-mm-ddd hh:mi:ss') from dual;
| 格式 | 含义 | 显示值 |
| yy | 两位年 | 19 |
| yyy | 三位年 | 019 |
| yyyy | 四位年 | 2019 |
| mm | 两位月 | 09 |
| mon | 字符集表示 | 9月、nov |
| month | 字符集 | 9月、november |
| dd | 当月日期 | 02 |
| ddd | 当年日期 | 245 |
| dy | 当周第几天 | 星期一、fri |
| day | 当周第几天 | 星期一、friday |
| hh | 12小时制小时 | 01 |
| hh24 | 24小时制小时 | 13 |
| mi | 分钟 | 45 |
| ss | 秒 | 12 |
| Q | 季度quarter 简写 | 3 |
| W | 当月第几周,week简写 | 1 |
| WW | 当年第几周 | 35 |
- 两个日期的差值:
- 天数可以直接加减计算,用trunc函数取整(取整函数视情况,to_number直接显示数字):
select trunc(sysdate-to_date('2019-09-02 13:45:12','yyyy-mm-dd hh24:mi:ss')) from dual;
-
- 月份用months_between函数比较,得出小数用ceil取上,用floor取下
select months_between(sysdate,to_date('2019-09-02 13:45:12','yyyy-mm-dd hh24:mi:ss')) from dual;
-
- 年份用月份的值除12,得出小数用ceil取上,用floor取下
select months_between(sysdate,to_date('2019-09-02 13:45:12','yyyy-mm-dd hh24:mi:ss'))/12 from dual;
-
- 相差小时
select trunc((sysdate-to_date('2020-07-16 16:03:45','yyyy-mm-dd hh24:mi:ss'))*24) from dual;
-
- 相差分钟
select trunc((sysdate-to_date('2020-07-16 16:03:45','yyyy-mm-dd hh24:mi:ss'))*24*60) from dual;
-
- 相差秒数
select trunc((sysdate-to_date('2020-07-16 16:03:45','yyyy-mm-dd hh24:mi:ss'))*24*60*60) from dual;

浙公网安备 33010602011771号