Welcome 微信登录

首页 / 数据库 / MySQL / Oracle基础教程:单行函数—日期类型函数

日期函数的处理
如果你对当前系统的日期格式 看这不舒服 可以修改当前会话的显示格式
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
  • 1
  • 2
  • 下一页
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)
表情: 姓名: 字数