oracle时间函数

来源:互联网 发布:如何恢复u盘数据 编辑:程序博客网 时间:2024/06/05 17:23


--日期函数 sysdate

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

这个是oracle最基本的得到本地的时间的函数,利用sysdate这个变量可以得到本地的时间,利用to_char将本地的时间转化为想要的日期格式,上面是转换成了24小时制的时间显示。


--脚本使用to_char()函数 时间戳函数systimestamp
select systimestamp from dual;

这个时间戳函数可以获取到精度很高的时间,例如09-12月-17 10.03.47.073000 下午 +08:00   后面的073000是sysdate这个变量不能实现的。


--得到数据库时区函数dbtimezone
select dbtimezone from dual;


--为日期加上指定月份函数
select add_months(sysdate,12) from dual;

这个是在sysdate上添加12个月来显示时间,用于添加月份。

--为日期加上指定天数
select sysdate+100 from dual;

--返回指定月份最后一天函数last_day  时间是此时你本地的时间的
select last_day(sysdate) from dual;

利用这个函数,可以直接返回本月的最后一天,而不需要自己去关注有多少天。


--返回指定日期后一周的日期函数next_day
select next_day(sysdate,'星期二') from dual;

这个函数有一点需要注意,如果你后面设置的日期小于今天的日期,那么它将返回的是下个星期的日期



--更改时区的函数
alter session set time_zone='-6:0';

--将时间转换为时间戳的形式
select timestamp '1993-12-18 10:12:12' from dual;

--提取指定日期特定部分的函数extract
select extract(year from sysdate) year,extract(minute from timestamp '2010-6-18 12:23:10') min,extract(second from timestamp '2010-6-18 12:24:10') sec from dual;

--截取的是年,分,秒,timestamp '2010-6-18 12:23:10'  这个是转换为时间戳,second from 表示从timestamp '2010-6-18 12:24:10'截取到秒
--返回会话所在时区当前日期函数months_between
select months_between(sysdate,date '1993-12-18') one,months_between(sysdate,date '2006-12-18') two from dual;
这个函数是返回今天,到1993-12-18这天的时间相差多少个月份。如果要求年龄,可以除以12

--这样计算出来的就是虚岁,只要超过了整数,就向上取整。

select ceil(months_between(sysdate,date '1993-12-18')/12) one from dual;


--时区时间转换函数
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') one ,to_char(new_time(sysdate,'PDT','est'),'yyyy-mm-dd hh24:mi:ss') two from dual;


--日期四舍五入、截取函数2013/1/1
select round(to_date( '2013-01-01 10:0:0','yyyy-mm-dd hh24:mi:ss')) from dual;


--日期截取函数 trunc函数
select to_char(trunc(to_date('2010-5-1 09:00:00','yyyy-mm-dd hh24:mi:ss')),'yyyy-mm-dd hh24:mi:ss') from dual;



--截取到月份  可以截取到2017-12-1号

select trunc(date '2017-12-2' - 1, 'mm') from dual;



写博客,用于理解和记忆,总结自己学到的东西,必要时可以查询,也希望能帮助到有需要的朋友。

以上是常用的时间函数,如果有朋友有更好的可以在下方留言分享。谢谢!