日期型函数
日期类型的函数操作日期、时间类型的相关数据,并返回日期或数字类型的数据。
1. SYSDATE 函数。
该函数没有参数,可以得到系统的当前日期,是很常用的函数。
下面示例演示了将得到的系统时间进行格式化。
示例脚本如下:
select sysdate, to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS')
from dual;
脚本中使用了 TO_CHAR()
函数,该函数具体用法后面会介绍,严格来说它属于转换函数。
2. 增加天数
select sysdate + 2 from dual;
3. ADD_MONTHS(date,integer) 函数。
该函数将返回在指定的日期上加一个月份数后的日期。
各参数具体含义如下:
date:指定的日期。
integer:要加的月份数,该值如果为负数,则表示减去的月份数。
该函数有些地方需要注意,当指定的日期是月的最后一天时,最后函数返回的结果也将是新月的最后一天。
而如果新的月份比指定日期月份的天数少,则函数将自动回调有效日期。
示例脚本如下:
select to_char(add_months(to_date('2009-9-15', 'YYYY-MM-DD'), 1),
'YYYY-MM-DD'),
to_char(add_months(to_date('2009-9-30', 'YYYY-MM-DD'), 1),
'YYYY-MM-DD'),
to_char(add_months(to_date('2010-1-30', 'YYYY-MM-DD'), 1),
'YYYY-MM-DD')
from dual;
脚本中使用了 TO_DATE()
函数,该函数具体用法后面会介绍,它属于转换函数。
4. MONTHS_BETWEEN(date1,date2) 函数。
该函数返回 date1
和 date2
之间的月份数。函数两个参数都为日期型数据。
当 date1>date2
时,如果两个参数表示日期是某月中的同一天,或它们都是某月中的最后一天,则该函数返回一整型数;否则,将返回小数。
当 date1<date2
时,则返回一负值。
示例脚本如下:
select months_between(to_date('2010-7-1', 'YYYY-MM-DD'),
to_date('2010-6-1', 'YYYY-MM-DD')) one,
months_between(to_date('2010-5-31', 'YYYY-MM-DD'),
to_date('2010-4-30', 'YYYY-MM-DD')) two,
months_between(to_date('2010-5-31', 'YYYY-MM-DD'),
to_date('2010-9-30', 'YYYY-MM-DD')) three
from dual;
5. LAST_DAY(date) 函数。
该函数返回参数指定日期对应月份的最后一天。
示例脚本如下:
select last_day(sysdate)
from dual;
6. SESSIONTIMEZONE 函数。
该函数没有参数,可以返回当前会话的时区。
示例脚本如下:
select sessiontimezone
from dual;
7. NEXT_DAY(date,char) 函数。
该函数返回当前日期向后的一周 char
的对应日期, char
表示的是星期几,全称和缩写都允许。但必须有效。
示例脚本如下:
select sysdate,next_day(sysdate, '星期一')
from dual;
8. EXTRACT(datetime) 函数。
该函数可以从指定的时间当中提取到指定的日期部分,例如从给定的日期得到年、月、分等。
示例脚本如下:
select extract(year from sysdate) year,
extract(minute from TIMESTAMP'2010-6-18 12:23:10') min,
extract(second from TIMESTAMP'2010-6-18 12:23:10') sec
from dual;
9. SYSTIMESTAMP 函数。
该函数没有参数,返回系统时间,该时间包含时区信息,精确到微秒。
返回类型为带时区信息的 TIMESTAMP
类型。
示例脚本如下:
select systimestamp
from dual;