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
);