add_months(sysdate,x)x月之后的日期;
last_day(sysdate)指定日期所在月份的最后一天;
next_day(sysdate,'星期x')当前日期后的下一个星期x;

months_between(sysdate,hiredate) 两个日期之间的月份间隔;

extract(year/month/day from sysdate;year/month/day from date '2019-10-1')从日期字符串中分离出年月日;取得时间间隔

select hiredate 雇佣日期,
last_day(hiredate) 雇佣当月的最后1天,
next_day(hiredate,'星期二') 雇佣后第一个星期二的日期,
add_months(hiredate,6) 雇佣6个月后的日期,
months_between(sysdate,hiredate) 当前日期到雇佣日期之间的月数
from emp;

--sqlplus下默认只显示年月日不显示时间,设置以24小时制和12小时制的语句分别如下:

SQL> alter session set nls_date_format='yyyy-mm-dd hh12:mi:ss';

Session altered.

SQL> select sysdate from dual;

SYSDATE
--------------------
2019-04-10 09:54:56

SQL> alter session set nls_date_format='yyyy-mm-dd hh12:mi:ss';

Session altered.

SQL> select sysdate from dual;

SYSDATE
--------------------
2019-04-10 09:54:56

--日期-数字=日期
--日期+数字=日期
--日期-日期=数字(天数)
--日期+日期 错误语法
select sysdate,sysdate+3,sysdate-3 from dual;

select ename, hiredate,sysdate-hiredate 雇佣至今天数,(sysdate-10)-hiredate 到十天前的雇佣天数 from emp;

--add_months(当前日期,x)  x月之后/之前的日期
select sysdate 当前日期,
add_months(sysdate,3) 三个月之后的日期,
add_months(sysdate,-3) 三个月之前的日期,
add_months(sysdate,60) 六十个月之后的日期
from dual;

select ename,hiredate 雇佣日期,add_months(hiredate,3)雇佣日期3个月后的日期 from emp;

--next_day(sysdate,'星期X') 下个星期X的日期

select sysdate 当前日期,
next_day(sysdate,'星期日') 下个星期日的日期,
next_day(sysdate,'星期二') 下个星期二的日期
from dual;

--last_day(sysdate)指定日期所在月份的最后一天
select sysdate,last_day(sysdate) from dual;

--查询雇佣日期为所在月份倒数第三天的员工信息。
select ename,job,
hiredate,last_day(hiredate) 雇佣日期坐在月的最后一天
from emp
where last_day(hiredate)-2=hiredate;

--months_between(sysdate,hiredate) 两个日期之间的月份间隔数
--查询员工的雇佣总月数和年数
select ename,job,hiredate,
trunc(months_between(sysdate,hiredate)) 当前日期和雇佣日期间隔的月数,
trunc(months_between(sysdate,hiredate)/12) 雇佣年数即雇月数除以12
from emp;

--员工入职至今的共x年x月x天

select ename 姓名, hiredate 雇佣日期,
trunc(months_between(sysdate,hiredate)/12) 年数,
trunc(mod(months_between(sysdate,hiredate),12)) 月数,
trunc(sysdate-add_months(hiredate,months_between(sysdate,hiredate))) 天数
from emp;

--extract(year/month/day from sysdate;year/month/day from date '2019-10-1')从日期字符串中分离出年月日
select
extract(year from sysdate) 年,
extract(month from sysdate) 月,
extract(day from sysdate) 日
from dual;

select
extract(day from time_one-time_two)
from(
select
to_timestamp('2019-10-1 19:12:33','yyyy-mm-dd hh24:mi:ss') time_one,
to_timestamp('2018-9-11 22:10:55','yyyy-mm-dd hh24:mi:ss') time_two
from dual);

select a 日期1,b 日期2,a-b 日期1减日期2,
extract(day from a-b) 日期1减日期2的day,
extract(year from a)-extract(year from b) 日期1减日期2的year
from
(
select to_timestamp('2019-12-14 18:34:45','yyyy-mm-dd hh24:mi:ss') a,
to_timestamp('1998-1-30 22:33:15','yyyy-mm-dd hh24:mi:ss') b
from dual
);

04-oracle时间函数的更多相关文章

  1. ORACLE时间函数(SYSDATE)深入理解

    ORACLE时间函数(SYSDATE)深入理解 加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add ...

  2. oracle 时间函数

    加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from ...

  3. ORACLE时间函数(SYSDATE)简析

    ORACLE时间函数(SYSDATE)简析 分类: 原文地址:ORACLE时间函数(SYSDATE)简析 作者:skylway 加法 select sysdate,add_months(sysdate ...

  4. Oracle时间函数numtoyminterval()

    格式:NumToYMInterval(n, interval_unit); n: 数值类型 interval_unit: 'YEAR', 'MONTH' ,或其他可以转换成这两个值之一的表达式   N ...

  5. Oracle时间函数

    YYYY年 Q季度 MM月 month月 WW当年第几周 W本月第几周 DDD 当年第几天 DD当月第几天 D当周内第几天 DY当周内星期几 day当周内星期几 HH或HH12:12进制小时数 HH2 ...

  6. [转载]ORACLE日期时间函数大全

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02   13:45:25为例)           Year:              yy two digits 两位年 ...

  7. Oracle日期时间函数大全

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits ...

  8. [转]ORACLE日期时间函数大全

    本文转自:http://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html ORACLE日期时间函数大全 TO_DATE格式(以时间: ::2 ...

  9. Oracle时间日期函数

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02   13:45:25为例)           Year:              yy two digits 两位年 ...

  10. Oracle TO_DATE() 函数格式化时间【全】

    TO_DATE格式(以时间:2007-11-02   13:45:25为例)          Year:             yy two digits 两位年                显 ...

随机推荐

  1. C# 四舍五入的理解

    Math.Round(45.367,2)     //Returns   45.37 Math.Round(45.365,2)     //Returns   45.36 C#中的Round()不是我 ...

  2. 开源SLAM

    GitHub 上优秀的开源SLAM repo (更新中):https://www.jianshu.com/p/464ca0d0c254 当前的开源SLAM方案:https://www.cnblogs. ...

  3. Appium 简介及工作原理

    申请:本文介绍主要是针对Android. 1.什么是Appium: Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及Firefox ...

  4. 【Linux】GDB调试工具

    GDB调试工具 Linux中包含一个很强大的调试工具GDB(GNU Debuger),可以用它来调试C和C++程序. 一. GDB的主要功能有: 设置断点,当程序运行到断点处暂停 显示变量的值,可以打 ...

  5. Atcoder 2159 連結 / Connectivity(并查集+map乱搞)

    問題文N 個の都市があり.K 本の道路と L 本の鉄道が都市の間に伸びています. i 番目の道路は pi 番目と qi 番目の都市を双方向に結び. i 番目の鉄道は ri 番目と si 番目の都市を双 ...

  6. jira项目管理平台搭建

    参考文档:http://www.cnblogs.com/ilanni/p/6200875.html   一.环境准备 jira7.2的运行是需要依赖java环境的,也就是说需要安装jdk并且要是1.8 ...

  7. ifstat命令行统计网络流量

      下载 ifstat ,  http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz   tar xzvf ifstat-1.1.tar.gz   ...

  8. window.open之postMessage传参数

    这次要实现一个window.open打开子视窗的同时传参数到子视窗,关闭的时候返回参数. 当然简单的做法非常简单,直接在window.open的URL之后接参数即可,但是毕竟get method的参数 ...

  9. S.O.L.I.D原则

    SILID原则: 是面向对象编程和设计的重要原则,在我们编程的过程中是谨记的重点,所以对其有深刻了解是必须的.   < Clean Code(代码整洁之道)>作者Robert C. Mar ...

  10. 适用于Java的嵌入式脚本语言

    此文已由作者赵昕授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. fakescript 轻量级嵌入式脚本语言 https://github.com/esrrhs/fakescr ...