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