oracle---常用函数4---日期函数

来源:互联网 发布:照片看图软件 编辑:程序博客网 时间:2024/05/21 05:57
1.sysdate---返回当前日期
select sysdate  hz from dual;
返回:2008-11-5


2.add_months(d1,n1)--返回若干月之后的日期
d1---1个日期
n1---1个数字
d1这个日期加上n1个月之后的日期
select sysdate,add_months(sysdate,3)  hz from dual


3.last_day(d1)---日期所在月的最后一天
d1--1个日期
select sysdate,last_day(sysdate)  hz from dual;


4.months_between(d1,d2)----返回d1减d2的月数
如果d1>d2,则返回正数
如果d1<d2,则返回负数
select sysdate,
months_between(sysdate,to_date('2006-01-01','YYYY-MM-DD')),
months_between(sysdate,to_date('2016-01-01','YYYY-MM-DD')) from dual;


5.NEW_TIME(dt1,c1,c2)
返回c2时区的dt1时间,在c1时区的时间
select sysdate bj_time,
new_time(sysdate,'PDT','GMT') los_angles from dual;
  大西洋标准时间:AST或ADT   
  阿拉斯加_夏威夷时间:HST或HDT   
  英国夏令时:BST或BDT   
  美国山区时间:MST或MDT   
  美国中央时区:CST或CDT   
  新大陆标准时间:NST   
  美国东部时间:EST或EDT   
  太平洋标准时间:PST或PDT   
  格林威治标准时间:GMT   
  Yukou标准时间:YST或YDT 
  
6.round(d1[,c1])---四舍五入日期,其实就是找距离指定日期d1最近的c1(日、月、季、年等)
select sysdate 当时日期,
round(sysdate) 最近0点日期,
round(sysdate,'day') 最近星期日,
round(sysdate,'month') 最近月初,
round(sysdate,'q') 最近季初日期, 
round(sysdate,'year') 最近年初日期 from dual;
c1对应的参数表:
最近0点日期: 取消参数c1或j
最近的星期日:day或dy或d
最近月初日期:month或mon或mm或rm 
最近季日期:q
最近年初日期:syear或year或yyyy或yyy或yy或y(多个y表示精度)  
最近世纪初日期:cc或scc


7.trunc(d1[,c1])---返回日期d1所在期间(参数c1)的第一天日期
d1--是日期,c1的参数和上面一样。
select sysdate 当时日期,
trunc(sysdate) 今天日期,
trunc(sysdate,'day') 本周星期日,
trunc(sysdate,'month') 本月初,
trunc(sysdate,'q') 本季初日期, 
trunc(sysdate,'year') 本年初日期 from dual;


8.next_day(d1[,c1])---返回下一个你指定的星期几的日期,比如下一个星期日是几号
c1对应:星期一,星期二,星期三……星期日
select sysdate 当时日期,
next_day(sysdate,'星期一') 下周星期一,
next_day(sysdate,'星期二') 下周星期二,
next_day(sysdate,'星期三') 下周星期三,
next_day(sysdate,'星期四') 下周星期四,
next_day(sysdate,'星期五') 下周星期五,
next_day(sysdate,'星期六') 下周星期六,
next_day(sysdate,'星期日') 下周星期日 from dual;


9.extract(c1 from d1)---返回d1日期中的c1的值
c1--是个度量单位,比如月,就是返回c1日期中的月的值
select 
extract(hour from timestamp '2001-2-16 2:38:40 ' ) 小时,
extract(minute from timestamp '2001-2-16 2:38:40 ' ) 分钟,
extract(second from timestamp '2001-2-16 2:38:40 ' ) 秒,
extract(DAY from timestamp '2001-2-16 2:38:40 ' ) 日,
extract(MONTH from timestamp '2001-2-16 2:38:40 ' ) 月,
extract(YEAR from timestamp '2001-2-16 2:38:40 ' ) 年
 from dual;


10.localtimestamp---返回会话中的日期和时间
select localtimestamp from dual;


11.current_timestamp--以timestamp with time zone数据类型返回当前会话时区中的当前日期
select current_timestamp from dual;


12.current_date----返回当前会话时区中的当前日期 
select current_date from dual;


13.dbtimezone---返回时区
select dbtimezone from dual;


14.SESSIONTIMEZONE---返回会话时区
select dbtimezone,SESSIONTIMEZONE from dual;


15.INTERVAL c1 set1---在指定日期上增加c1的数值
select
trunc(sysdate)+(interval '1' second), --加1秒(1/24/60/60)
trunc(sysdate)+(interval '1' minute), --加1分钟(1/24/60)
trunc(sysdate)+(interval '1' hour), --加1小时(1/24)
trunc(sysdate)+(INTERVAL '1' DAY),  --加1天(1)
trunc(sysdate)+(INTERVAL '1' MONTH), --加1月
trunc(sysdate)+(INTERVAL '1' YEAR), --加1年
trunc(sysdate)+(interval '01:02:03' hour to second), --加指定小时到秒
trunc(sysdate)+(interval '01:02' minute to second), --加指定分钟到秒
trunc(sysdate)+(interval '01:02' hour to minute), --加指定小时到分钟
trunc(sysdate)+(interval '2 01:02' day to minute) --加指定天数到分钟
from dual;