CONAN ZONE
你越挣扎我就越兴奋
BlogJava
首页
新随笔
联系
聚合
管理
0 Posts :: 282 Stories :: 0 Comments :: 0 Trackbacks
留言簿
(6)
给我留言
查看公开留言
查看私人留言
文章分类
(325)
Application Server(4)
CVS(4)
Database(7)
Eclipse(7)
ExtJs(1)
GlassFish(1)
Hibernate(3)
HTML/CSS(3)
Italian(1)
J2EE(24)
J2SE(15)
JAVA(27)
JMS(2)
JQuery(7)
JS(12)
JVM(5)
Linux/Unix(21)
Mylyn(2)
NetBeans(4)
NoSql(1)
Oracle(27)
PowerDesigner(1)
Python(1)
Solr(15)
Spring(11)
SQL(13)
Struts(2)
Struts2/Webwork(12)
SVN(7)
VIM(13)
Web Service(13)
web技术(4)
其他技术(13)
养生保健(7)
动漫(1)
外语(2)
新闻娱乐(19)
旅游(1)
模式(1)
模板(2)
生活(2)
项目管理(7)
文章档案
(282)
2012年6月 (3)
2012年5月 (12)
2011年12月 (3)
2011年11月 (2)
2011年7月 (1)
2011年5月 (2)
2011年4月 (4)
2011年3月 (1)
2011年2月 (4)
2010年12月 (2)
2010年11月 (7)
2010年9月 (2)
2010年8月 (1)
2010年7月 (3)
2010年5月 (2)
2010年4月 (3)
2010年3月 (2)
2009年12月 (1)
2009年11月 (1)
2009年10月 (3)
2009年9月 (3)
2009年8月 (6)
2009年7月 (6)
2009年6月 (3)
2009年5月 (2)
2009年4月 (8)
2009年3月 (1)
2009年2月 (15)
2009年1月 (9)
2008年12月 (2)
2008年11月 (11)
2008年10月 (1)
2008年9月 (2)
2008年8月 (3)
2008年7月 (54)
2008年6月 (97)
guy's blog
ccsoft's blog
Ray's blog
square's blog
刘佳's blog
搜索
积分与排名
积分 - 406127
排名 - 136
最新评论
Oracle开发专题之:时间运算2(日期截取及四舍五入)
一、Oracle中的Round和Trunc:
如同对数字进行四舍五入和按位截取一样,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函数指定了格式,事情就变得有点复杂了,不过核心思想还是不变:Round是四舍五入,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
posted on 2008-07-02 20:33
CONAN
阅读(630)
评论(0)
编辑
收藏
所属分类:
Oracle
Powered by:
BlogJava
Copyright © CONAN