您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 永州分类信息网,免费分类信息发布

Oracle基础教程:单行函数—日期类型函数

2024/4/30 10:03:51发布60次查看
因为round不能处理字符型数据,所以报错,我们要将字符型数据转换为日期型 idlegt; select round(to_date(
日期函数的处理
如果你对当前系统的日期格式 看这不舒服 可以修改当前会话的显示格式
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:31
idle>  这是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.6290856
idle>
可以将日期型的数据和一个小时数相加减 这个数要除以24
idle> select sysdate from dual;
sysdate
-------------------
2010-12-17 08:55:56
idle> select sysdate + 5/24 from dual;
sysdate+5/24
-------------------
2010-12-17 13:55:56
idle>
计算scott的工龄
idle> select ename,(sysdate-hiredate)/365 years from emp where ename='scott';
ename  years
---------- ----------
scott    23.6804732
idle>
日期型函数
 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')
-----------------------------------------
           -2
idle> select months_between('2010-12-10','2010-10-10') from dual;
months_between('2010-12-10','2010-10-10')
-----------------------------------------
     2
idle>
add_months(日期,n)
把n个月加到日期上
idle> select add_months('2010-10-10',3) from dual;
add_months('2010-10
-------------------
2011-01-10 00:00:00
idle>
next_day(日期,星期)
从当天算起,求下一个指定星期几是几号. 如果是中文系统将monday改成星期一
idle> select next_day(sysdate,'monday') from dual;
next_day(sysdate,'m
-------------------
2010-12-20 09:02:06
idle>
idle> select next_day(sysdate,'fri') from dual;
next_day(sysdate,'f
-------------------
2010-12-24 09:02:44
idle>
last_day(日期)
返回该日期的所在月的最后一天
idle> select last_day(sysdate) from dual;
last_day(sysdate)
-------------------
2010-12-31 09:03:26
idle>
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-19
idle>
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

永州分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录