Oracle日期函数:过去、现在及日期的差
上几天把Oracle的数值函数整理完了,今天晚上把Oracle的日期函数整理一下。这些东西吧,不能做到全都记住的话,那也必须做到心中有数,知道有它的存在可以避免开发过程中绕弯子。从到到尾捋顺一遍还是有很多收获的。
一、日期算法
1、sysdate、current_date及systimestamp
Oracle使用计算机操作系统的当前日期和时间,是通过sysdate函数实现的,在任何可以使用Oracle函数的其它地方都可以使用sysdate函数,可以将它视为每个表的一个隐藏列或者伪列。
?
1
2
3
selectsysdatefromdual;
结果:2013/12/22 19:14:21
current_date 返回的是当前会话的时区的系统日期,我们平时用的都是东八区,如果将当前会话时间修改成东九区试试:
?
1
2
3
4
5
altersessionsettime_zone='+09:00';
selectcurrent_date,sysdate from dual
结果: 2013/12/24 20:27:33 2013/12/24 19:27:32
通过例子我们也看到它俩的区别了。
还有一个函数systimestapm,它返回的是本机的系统时间(包含微秒和时区),它跟会话的时区无关
?
1
2
3
select systimestamp from dual
结果: 24-12月-13 下午+08:00
2、两个日期的差
两个日期可以直接进行加减,返回的数值单位是天,也可以用一个日期加减某个数值代表N天后(前)
比如十天后发工资,那么十天后是那一天呢?
?
1
2
3
select sysdate+10 from dual
结果: 2014/1/1 19:38:19
再比如今天除夕是2014-01-30,那么距离过年还有哪个多少天呢
?
1
2
3
selectto_date('2014-01-30','yyyy-MM-dd') -sysdate fromdual
结果:
晕,还有一个多月才能过年呢啊
3、添加月份、减少月份
用的都是add_months
查询一下三个月后、三个月前分别是哪一天:
?
1
2
3
selectadd_months(sysdate,3),add_months(sysdate,-3) from dual
结果: 2014/3/22 19:47:18 2013/9/22 19:47:18
添加年份、减少年份就不用说了,直接在数值上乘以12就可以推算N年前、N年后是哪一天
4、greatest和least
这两个函数在介绍数值函数的时候提到过,在数值函数中分别代表取一组数值中的最大值和最小值。
这哥俩在日期函数中也有应用,greatest是从一组日期数据中取距离当前最近的日期,least是在一组日期中选择最早的日期。
?
1
2
3
4
5
6
7
select greatest(to_date('2013-11-11','
临床医学检验论文关于医学检验论文医学检验论文检 来自淘豆网m.daumloan.com转载请标明出处.