玩甲骨文的日期函数,你得懂怎么输出当前系统时间:
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