玩甲骨文的日期函数,你得懂怎么输出当前系统时间:

select sysdate from dual

 得出的时间格式:2015-12-08 15:34:56

 

想看三天后此时的时间:

select sysdate +3  from dual

得出的时间格式:2015-12-11 15:39:02

  如果是加3.几,得出的是3.几天后的时间。

 

想在本系统时间上看三个月后,三个月前,六十个月后的时间:

select sysdate ,
add_months(sysdate,
3), add_months(sysdate,-3), add_months(sysdate,60) from dual;

 

想看下个星期一是什么时候,可以这么写:

select 
              sysdate,
             next_day(sysdate,'monday')
from dual;

或者这么写:

select 
              sysdate,
             next_day(sysdate,2)
from dual;

1是代表周日,美国人的weekday第一天是从周日开始的哦。

  如果用字符串‘周一’、‘星期一’,我试过,不可以。

反之,也有last_day()函数方法,但是不支(sysdate,2)的格式,只能last_day(sysdate),得到上周的日期


例子:查询雇佣人员的编号,名字,雇佣日期,已经雇佣了多少个月,多少年
--months_bewteen()两者之间有多少月份,trunc()是四舍五入
select 
      empno,
      ename,
      hiredate,
      trunc(months_between(sysdate,hiredate)),
      trunc(months_between(sysdate,hiredate)/12) ,
      sysdate - add_months(hiredate,months_between(sysdate,hiredate))
      from emp
      

 

使用extract()函数:

--extract()函数 拆出年、月、日
select 
      extract(year from date '2001-09-19') years ,
      extract(month from date '2001-09-19')  months,
      extract(day from date '2001-09-19') days
 from dual

 

还有另一种时间格式:

  select systimestamp from dual;

得出的格式:08-DEC-15 04.00.05.541000 PM +08:00

 

用这个可以单独拆出 年月日 时角分

select 
      extract(year from systimestamp) years ,
      extract(month from systimestamp)  months,
      extract(day from systimestamp) days,
       extract(hour from systimestamp) hour,
        extract(second from systimestamp) seconds
 from dual

 

使用转化函数可以令其相加减:

--转化函数,to_timestamp()转为字符串,时间相减或相加
select 
 extract(hour from datatime_one - datatime_two) hours
 from (
 select 
to_timestamp('1990-08-13 12:00:00','YYYY-mm-dd hh24:mi:ss') datatime_one,
to_timestamp('1990-08-13 10:00:00','YYYY-mm-dd hh24:mi:ss') datatime_two
from dual
);

得出2