日期函数
SYSDATE
--当前系统时间 select sysdate from dual;
EXTRACT
--获取当前年份 select extract(year from sysdate) from dual; --年 select extract(month from sysdate) from dual; --月 select extract(day from sysdate) from dual; --日
TO_DATE
--将字符串转换为日期 SELECT TO_DATE('2014-12-31', 'yyyy-mm-dd') FROM DUAL; SELECT TO_DATE('2014-12-31 15:20:45', 'yyyy-mm-dd hh24:mi:ss') FROM DUAL; SELECT TO_DATE('2014年12月31日', 'yyyy"年"mm"月"dd"日') AS T FROM DUAL; --两个日期间的天数 SELECT FLOOR(SYSDATE - TO_DATE('20141201', 'yyyymmdd')) FROM DUAL;
TO_DATE格式(以时间:2007-11-02 13:45:25为例)
类别 |
格式 |
说明 |
值 |
Year |
yy |
two digits 两位年 |
07 |
yyy |
three digits 三位年 |
007 |
|
yyyy |
four digits 四位年 |
2007 |
|
Month |
mm |
number 两位月 |
11 |
mon |
abbreviated 字符集表示 |
11月,若是英文版,显示nov |
|
month |
spelled out 字符集表示 |
若是英文版,显示november |
|
Day: |
dd |
number当月第几天 |
02 |
ddd |
number当年第几天 |
02 |
|
dy |
abbreviated 当周第几天简写 |
星期五,若是英文版,显示fri |
|
day |
spelled out 当周第几天全写 |
星期五,若是英文版,显示friday |
|
Hour: |
hh |
two digits 12小时进制 |
01 |
hh24 |
two digits 24小时进制 |
13 |
|
Minute |
mi |
two digits 60进制 |
45 |
Second |
ss |
two digits 60进制 |
25 |
其他: |
Q |
digit季度 |
4 |
WW | digit 当年第几周 | 44 | |
W | digit 当月第几周 | 1 |
TO_CHAR
SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss') AS NOWTIME FROM DUAL; --日期转化为字符串 SELECT TO_CHAR(SYSDATE, 'yyyy') AS NOWYEAR FROM DUAL; --获取时间的年 SELECT TO_CHAR(SYSDATE, 'mm') AS NOWMONTH FROM DUAL; --获取时间的月 SELECT TO_CHAR(SYSDATE, 'dd') AS NOWDAY FROM DUAL; --获取时间的日 SELECT TO_CHAR(SYSDATE, 'hh24') AS NOWHOUR FROM DUAL; --获取时间的时 SELECT TO_CHAR(SYSDATE, 'mi') AS NOWMINUTE FROM DUAL; --获取时间的分 SELECT TO_CHAR(SYSDATE, 'ss') AS NOWSECOND FROM DUAL; --获取时间的秒 SELECT TO_CHAR(SYSDATE, 'yyyy"年"mm"月"dd"日') AS T FROM DUAL; --带中文的时间格式
MONTHS_BETWEEN(date1,date2)
--计算两个日期之间的月份差 select months_between('1-1月-2014', '31-12月-2014') from dual; 结果:-11.9677419354839
ADD_MONTHS(date,month)
--月份的添加,2014-5-20后的3个月 select add_months('20-5月-2014', 3) from dual; 结果:2014/8/20 --月份的添加,2014-5-20前的3个月 select add_months('20-5月-2014', -3) from dual; 结果:2014/2/20
NEXT_DAY(date,week)
--返回指定日期后的星期,返回今天后的下一个星期六是多少号 select next_day(sysdate, '星期六') from dual;
LAST_DAY
--返回指定日期所在月的最后一天 select last_day(sysdate) from dual;
ROUND
--按照指定格式对日期进行四舍五入 select round(sysdate, 'year') from dual; --按照年 select round(sysdate, 'month') from dual; --按照月 select round(to_date('2014-11-16', 'yyyy-mm-dd'), 'day') from dual; --按照星期 select round(to_date('2014-11-16', 'yyyy-mm-dd'), 'dd') from dual; --按照日期