Oracle数据库之SQL单行函数---日期函数集锦
Oracle数据库之SQL单行函数---日期函数集锦
前言
Oracle数据库的日期函数是十分强大的,而且也比较的多。笔者将之整理下来供日后的参考
使用。于自己便利,也于别人便利!
常用日期型函数
1、Sysdate: 当前的日期和时间
前言
Oracle数据库的日期函数是十分强大的,而且也比较的多。笔者将之整理下来供日后的参考
使用。于自己便利,也于别人便利!
常用日期型函数
1、Sysdate: 当前的日期和时间
[sql]
select Sysdate from dual;
select Sysdate from dual;
2、Last_day():某个时间所在月的最后一天
[sql]
select Sysdate from dual;
select Sysdate from dual;
3、Add_moths(d,n):当前日期d后推n个月,一般用于从一个日期值增加或者减少一些月份
[sql]
select Add_months(Sysdate,12) from dual;--增加一年
select Add_months(Sysdate,-12) from dual;--减少12个月
select Add_months(Sysdate,12) from dual;--增加一年
select Add_months(Sysdate,-12) from dual;--减少12个月
这两结果就不演示了。
4、Months_between(f,s):日期f和s之间相差的月数
4、Months_between(f,s):日期f和s之间相差的月数
[sql]
select months_between(sysdate,to_date('2012-11-12','yyyy-mm-dd'))from dual;
select months_between(sysdate,to_date('2012-11-12','yyyy-mm-dd'))from dual;
至于to_date()的用法接下来会有介绍
5、Next_day(d,day_of_week):返回有day_of_week命名的,在变量d中指定的日期之后的
第几个工作日的日期。(day_of_week必须为该星期中的某一天)
[sql]
select next_day(sysdate,3) from dual;
select next_day(sysdate,3) from dual;
看看结果吧:
为什么会出现这种结果呢?因为1代表的是周日,这里的3代表的是周2,看看笔者的
系统时间已经过了周二了,那么它会表示下周的周二。
6、Current_date():返回当前会话时区中的当前日期
为什么会出现这种结果呢?因为1代表的是周日,这里的3代表的是周2,看看笔者的
系统时间已经过了周二了,那么它会表示下周的周二。
6、Current_date():返回当前会话时区中的当前日期
[sql]
alter session set time_zone='-11:00' ;
select sessiontimezone,current_timestamp from dual;
alter session set time_zone='-11:00' ;
select sessiontimezone,current_timestamp from dual;
7、dbtimezone():返回时区
[sql]
select dbtimezone from dual;
select dbtimezone from dual;
8、extract():找出日期或间隔值的字段值
[sql]
--月份的间隔值
select extract(month from sysdate) "This Month" from dual;
--天的间隔值
select extract(day from sysdate) "This Month" from dual;
--月份的间隔值
select extract(month from sysdate) "This Month" from dual;
--天的间隔值
select extract(day from sysdate) "This Month" from dual;
9、localtimestamp():返回会话中的日期和时间
[sql]
select localtimestamp from dual;
select localtimestamp from dual;
10、TRUNC(for dates):为指定的元素而截取的日期值
具体语法如下:
TRUNC(date[,fmt])
date:日期值
fmt:日期格式,该日期格式有指定的元素格式所截去,忽略它的
话,则由最近的日期截去。
看看具体的使用情况吧:
(1)、按年截尾
[sql]
select TRUNC(TO_DATE('2012-04-05 09:24','yyyy-mm-dd hh:mi'),'yyyy')
from dual ;
select TRUNC(TO_DATE('2012-04-05 09:24','yyyy-mm-dd hh:mi'),'yyyy')
from dual ;
(2)、按月截尾
[sql]
select TRUNC(TO_DATE('2012-04-05 09:24','yyyy-mm-dd hh:mi'),'mm')
from dual ;
select TRUNC(TO_DATE('2012-04-05 09:24','yyyy-mm-dd hh:mi'),'mm')
from dual ;
至于其他按日、按时截尾笔者就不演示了。
11、INTERVAL:在当前时间上+1
[sql]
select * from emp where hiredate >to_date('1980/12/7','YYYY/MM/DD')
+interval '1' year ;
--找出入职时间比1981/12/7晚的员工的全部信息
select * from emp where hiredate >to_date('1980/12/7','YYYY/MM/DD')
+interval '1' year ;
--找出入职时间比1981/12/7晚的员工的全部信息
常用的日期数据处理函数
上面使用到了to_date()他是日期数据格式处理的函数,另外还有一个to_char()函数,这两个
函数就是用于处理日期格式的。至于其具体用法笔者这里也不想过多描述了,有机会会在以后进行
一些总结。