Oracle SQL单行函数之日期函数

                                                           日期时间函数
简介:日期函数用于处理DATE,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE,INTERVAL DAY TO SECOND以及INTERVAL YEAR TO MONTH等数据类型的数据。
1.ADD_MONTHS(d,n)
该函数用于返回特定日期时间之前或之后的月份所对应的日期时间。d用于指定日期时间数据,参数n可以是任意整数。当n为负整数时,返回特定日期之前月份对应的日期时间;
当n为正整数时,返回特定日期之后月份对应的日期时间。
例: select ename,to_char(add_months(hiredate,12*20),'yyyy-MM-dd') from emp where deptno=20;
2.CURRENT_DATE
该函数用于返回当前会话时区所对应的日期。
3.CURRENT_TIMESTAMP
该函数用于返回当前会话时区的日期信息和时区信息。
4.DBTIMEZONE
该函数用于返回数据库所在的时区
5.EXTRACT(data FROM datetime)
该函数用于从日期时间值中摘取特定数据(例如取得年份、月份等)data用于指定被提取数据(year,month,day,hour等),datetime用于指定日期时间值。
例:select extract(month from sysdate) current_month from dual;
6.LAST_DAY(d)
该函数用于返回特定日期所在月份最后一天。
7.LOCALTIMESTAMP
该函数用于返回当前会话时区的日期时间。
8.MONTHS_BETWEEN(d1,d2)
该函数用于返回日期d1和d2之间相差的月数。如果d1小于d2,则返回负数。如果日期d1和d2的天数相同或都是月底,则返回整数;
否则Oracle以每月31天为准,计算结果的小数部分。
例:select ename,trunc(months_between(sysdate,hiredate)/12) work_year from emp where deptno=10;
9.NEW_TIME(date,zone1,zone2)
该函数用于返回特定时区的日期时间在其他时区中的日期时间,date用于指定日期时间,zone1用于指定时区一,zone2用于指定时区二。
10.NEXT_DAY(d,char)
该函数用于返回特定日期之后的第一个工作日所对应的日期。d用于指定日期时间值,char用于指定工作日。
11.ROUND(d[,fmt])
该函数用于返回日期的四舍五入结果。d用于指定日期时间值,fmt用于指定四舍五入的方式。
若fmt设置为year,则7月1日为分界线;若fmt设置为month,则16日为分界线;若fmt设置为day,则中午12:00为分界线。
12.TO_DSINTERNAL(char)
该函数用于将符合INTERVAL DAY TO SECOND格式的字符串转变为INTERVAL DAY TO SECOND类型。
例:select sysdate,sysdate+to_dsinterval('10 10:00:00') from dual;
13.TO_YMINTERVAL(char)
该字段用于将符合INTERVAL YEAR TO MONTH格式的字符串转变为INTERVAL YEAR TO MONTH类型。
例:select ename,hiredate+to_yminterval('10-5') from emp where deptno=30;
14.TRUNC(d,[fmt])
该函数用于截断日期函数数据。d用于指定日期时间值,fmt用于指定截断日期时间数据的方法。
如果设置fmt为YEAR,则结果为本年度的1月1日;如果设置fmt为MONTH,则结果为本月1日。
例:
    select trunc(sysdate) from dual  --2011-3-18  今天的日期为2011-3-18
    select trunc(sysdate, 'mm')   from   dual  --2011-3-1    返回当月第一天.
    select trunc(sysdate,'yy') from dual  --2011-1-1       返回当年第一天
    select trunc(sysdate,'dd') from dual  --2011-3-18    返回当前年月日
    select trunc(sysdate,'yyyy') from dual  --2011-1-1   返回当年第一天
    select trunc(sysdate,'d') from dual  --2011-3-13 (星期天)返回当前星期的第一天
    select trunc(sysdate, 'hh') from dual   --2011-3-18 14:00:00   当前时间为14:41   
    select trunc(sysdate, 'mi') from dual  --2011-3-18 14:41:00   TRUNC()函数没有秒的精确

猜你喜欢

转载自blog.csdn.net/fhy36897/article/details/89261756