日期函数
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; --按照日期