Oracle基础 (十三)日期函数

时间:2024-09-22 22:35:21

日期函数

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