oracle四舍五⼊⽇期,Oracle时间运算(⽇期截取及四舍五⼊)Oracle时间运算(⽇期截取及四舍五⼊) 如同对数字进⾏四舍五⼊和按位截取⼀样,Oracle对时间⽇期也提供了这两种功能。但⽐起对数字进⾏四舍五⼊和截取⽐较复杂:这是因为时间⽇期是有格式的。下⾯看看这两个函数的定义和⽤途: ROUND(date [, format]) TRUNC(d
Oracle时间运算(⽇期截取及四舍五⼊) 如同对数字进⾏四舍五⼊和按位截取⼀样,Oracle对时间⽇期也提供了这两种功能。但⽐起对数字进⾏四舍五⼊和截取⽐较复杂:这是因为时间⽇期是有格式的。下⾯看看这两个函数的定义和⽤途:
ROUND(date [, format])
TRUNC(date [, format])
Round函数对⽇期进⾏“四舍五⼊”,Trunc函数对⽇期进⾏截取。如果我们不指定格式的话,Round会返回⼀个最接近date参数的⽇期,⽽Trunc函数只会简单的截取时分秒部分,返回年⽉⽇部分。
⼆、Round和Trunc函数⽰例:
SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') now_date,
2 to_char(Round(sysdate),'yyyy-mm-dd hh24:mi:ss') round_date,
3 to_char(Trunc(sysdate),'yyyy-mm-dd hh24:mi:ss') trunc_date
4 from dual;
NOW_DATE ROUND_DATE TRUNC_DATE
-------------------------------------- -------------------------------------- ----------------------
2008-06-30 14:52:13 2008-07-01 00:00:00 2008-06-30 00:00:00
这是⼀个典型的例⼦,由于我们没有指定round和trunc函数的格式,所以Oracle默认采⽤了按⽇期时间的 格式,该例⼦中当前的时间是下午14:52分,已经超过了12:00 AM这个中界线,所以Round返回07-01⽇⽽⾮06-30⽇。⽽Trunc不管三七⼆⼗⼀直接截取前⾯⽇期部分返回。
另外⼀个值得注意的地⽅是这两个函数返回的时分秒都是00:00:00,即⼀天的开始时间(对于12⼩时制的返回的是12:00:00 AM)。
三、指定格式的Round和Trunc函数⽰例:
如果我们对Round函数和Trunc函数指定了格式,事情就变得有点复杂了,不过核⼼思想还是不变:R
ound是 四舍五⼊,Trunc是截取。举个例⼦来说,假如我们以年为格式,则现在Oracle的判断是基于年来判断,超过⼀年的⼀半(即6⽉30⽇),Round 函数则返回下⼀年了,Trunc函数依然返回当前年。
SQL> select sysdate "Now date",
2 Round(sysdate, 'yyyy') Round_year,
3 Trunc(sysdate, 'yyyy') Trunc_year
4 from dual;
Now date ROUND_YEAR TRUNC_YEAR
---------- ---------- ----------
30-6⽉ -08 01-1⽉ -08 01-1⽉ -08
关于这两个函数可⽤的格式⾮常多,但⽇常应⽤中⽤得⽐较多的基本上就这⼏个,以Round函数为例:
select Round(sysdate, 'Q') Rnd_Q,
Round(sysdate, 'Month') Rnd_Month,
Round(sysdate, 'WW') Rnd_Week,
Round(sysdate, 'W') Rnd_Week_again, Round(sysdate, 'DDD') Rnd_day,
Round(sysdate, 'DD') Rnd_day_again,
Round(sysdate, 'DAY') Rnd_day_of_week, Round(sysdate, 'D') Rnd_day_of_week_again, Round(sysdate, 'HH12') Rnd_hour_12, Round(sysdate, 'HH24') Rnd_hour_24, Round(sysdate, 'MI') Rnd_minute
from dual
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论