日期函数的处理
如果你对当前系统的日期格式 看这不舒服 可以修改当前会话的显示格式
idle> alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS";Session altered.idle> select sysdate from dual;SYSDATE
-------------------
2010-12-17 08:52:31idle> 这是OS系统时间 数据库本身没时间 只有SCN号
日期可以直接参与运算
idle> select sysdate-10 from dual;SYSDATE-10
-------------------
2010-12-07 08:53:16两个日期型数据相减会得到相差的天数
idle> select to_date("2010-12-30")-sysdate from dual;TO_DATE("2010-12-30")-SYSDATE
-----------------------------
12.6290856idle>
可以将日期型的数据和一个小时数相加减 这个数要除以24
idle> select sysdate from dual;SYSDATE
-------------------
2010-12-17 08:55:56idle> select sysdate + 5/24 from dual;SYSDATE+5/24
-------------------
2010-12-17 13:55:56idle> 计算scott的工龄
idle> select ename,(sysdate-hiredate)/365 "years" from emp where ename="SCOTT";ENAME years
---------- ----------
SCOTT 23.6804732idle> 日期型函数
MONTHS_BETWEEN
ADD_MONTHS
NEXT_DAY
LAST_DAY
ROUND 和 TRUNC 对日期的取舍MONTHS_BEWTEEN(日期1,日期2)
如果日期1大于日期2返回正数,日期1小于日期2返回负数
idle> select months_between("2010-10-10","2010-12-10") from dual;MONTHS_BETWEEN("2010-10-10","2010-12-10")
-----------------------------------------
-2idle> select months_between("2010-12-10","2010-10-10") from dual;MONTHS_BETWEEN("2010-12-10","2010-10-10")
-----------------------------------------
2idle> ADD_MONTHS(日期,n)
把n个月加到日期上
idle> select add_months("2010-10-10",3) from dual;ADD_MONTHS("2010-10
-------------------
2011-01-10 00:00:00idle>NEXT_DAY(日期,星期)
从当天算起,求下一个指定星期几是几号. 如果是中文系统将MONDAY改成"星期一"
idle> select next_day(sysdate,"MONDAY") from dual;NEXT_DAY(SYSDATE,"M
-------------------
2010-12-20 09:02:06idle>
idle> select next_day(sysdate,"fri") from dual;NEXT_DAY(SYSDATE,"F
-------------------
2010-12-24 09:02:44idle> LAST_DAY(日期)
返回该日期的所在月的最后一天idle> select last_day(sysdate) from dual;LAST_DAY(SYSDATE)
-------------------
2010-12-31 09:03:26idle> idle> alter session set nls_date_format="YYYY-MM-DD";Session altered.
idle> select ename,hiredate,last_day(hiredate),next_day(hiredate,"SUN"),months_between(sysdate,hiredate) "MON",ADD_MONTHS(hiredate,3) from emp
where ename="SCOTT";ENAME HIREDATE LAST_DAY(H NEXT_DAY(H MON ADD_MONTHS
---------- ---------- ---------- ---------- ---------- ----------
SCOTT 1987-04-19 1987-04-30 1987-04-26 283.947709 1987-07-19idle>
ROUND(date,"[day|month|year]") 和 trunc(date,"[day|month|year]") 应用于日期型数据
数字的进位和截取是以小数点为中心,而日期的进位和截取是以年月日时分秒为中心idle> select round("2010-10-10","MONTH") from dual;
select round("2010-10-10","MONTH") from dual
*
ERROR at line 1:
ORA-01722: invalid number
Oracle基础教程:单行函数—数值类型函数Oracle基础教程:单行函数—类型转换函数相关资讯 oracle数据库教程
- Oracle raw数据类型介绍 (01/29/2013 10:05:53)
- 监听器注册与ORA-12514 错误分析 (11/13/2012 14:30:08)
- Oracle SQL的cursor理解 (11/13/2012 14:16:17)
| - Oracle 如何强制刷新Buffer Cache (01/29/2013 10:02:46)
- dblink致Oracle库的SCN变成两库的 (11/13/2012 14:24:41)
- Linux操作系统下完全删除Oracle数 (11/13/2012 08:25:52)
|
本文评论 查看全部评论 (0)