现在的位置: 首页 > 数据库 > 正文

Oracle SQL时间日期函数常见使用方法

2014年12月14日 数据库 ⁄ 共 1762字 暂无评论 ⁄ 阅读 2,023 次

常用日期函数有SYSDATE、ADD_MONTHS(date,integer)、MONTHS_BETWEEN(date1,date2)、LAST_DAY(date)、NEXT_DAY(date,char)、NEW_TIME(date,timezone1,timezone2) 、EXTRACT(data FROM date)、INTERVAL YEAR TO MONTH、TO_DATE()、TO_CHAR()等。

时间函数功能介绍

SYSDATE

sysdate:返回当前日期,可返回日期时分秒;

systimestamp:同样返回当前日期,不过其时间包含时区信息、上下午且可精确到微秒;

dbtimezone:返回当前数据库时区;

current_date:等同于sysdate;

sessiontimezone:返回会话当前时区;

ADD_MONTHS(date,integer)

返回指定日期加一个整数月数后的日期,若integer为负数则表示date之前integer个月。注意注意的是,若date是某个月的最后一天,则函数使用后得到的结果月的最后一天,可能与date并非同一天。该函数在开发中经常使用,如求入职时间超过2年的员工。

MONTHS_BETWEEN(date1,date2)

计算date1和date2之间月数,返回值带小数。当前日期值大于过去日期值,该函数用date1-date2,所以若前者为现在,后者为以前则结果为正,否则为负。

LAST_DAY(date)

该函数返回指定日期所在月份最后一天的日期。

NEXT_DAY(date,char)

该函数返回date之后7天的星期n所对应的日期(包含时间),char可用字符如Monday或数字1等,其中1-7为星期日到星期六,1表示星期日。

TRUNC(date,data)

该函数返回的是日期类型

trunc(sysdate):返回当前日期,无时分秒

trunc(sysdate,'year'):返回当前年的1月1日,无时分秒

trunc(sysdate,'month'):返回当前月的1日,无时分秒

trunc(sysdate,'day'):返回当前星期的星期天,无时分秒

EXTRACT(data FROM date)

该函数从日期中提取指定数据返回数值,date若为sysdate则data可为year、month、day。若date为systimestamp则data可以year、month、day、hour、minute、second等。

INTERVAL

interval用于时间间隔,其后跟间隔值然后跟单位。如YEAR 、YEAR TO MONTH、DAY、HOUR、SECOND、DAY TO SECOND等。如,找出100天又1小时30分之前的某天时间:select sysdate - (interval '100 1:30' day(3) to minute) from dual;。需要注意的是day默认精度是2,若天数较多则需要在day单位后加精度。

TO_CAHR(date,format)

常用format有Q(季度)、YYYY(4位数字年)、YEAR(年份大写全拼)、MM(2位数字月)、Month(月份首字母大写全拼)、MON(大写月份前3个字母)、W(1位数字周)、DD(2位数字本月第几天)、D(1位数字本周第几天)、DAY(周几大写全拼)、HH24(2位数字24小时数)、HH(2位数字12小时数)、MI(2位数字分)、SS(2位数字秒)等。

时间函数常见用法

1)获取当前时间的24小时制小时:

select to_char(sysdate,'hh24') from dual;

2)求30天后某天是星期几:

select to_char(sysdate + interval '30' day,'Day') from dual;

3)求今天到过去3个月间共有多少天:

select (sysdate - add_months(sysdate,-3)) from dual;

4)找出下周日的日期:

select next_day(sysdate,'sunday') from dual;

5)找出本年的天数:

select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual;

» 声明:本站文章源于个人经验总结或书籍、互联网转载,内容仅用于个人学习,请勿转载,否则后果自负!

给我留言

留言无头像?