`

Oracle开发--日期截取及四舍五入

阅读更多

一、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

原文地址:http://www.blogjava.net/pengpenglin/archive/2008/06/30/211657.html

分享到:
评论

相关推荐

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其三、职业方向多:Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向。 四、 如何学习 认真听课、多思考问题、多动手操作、有问题一定要问、多参与讨论、多帮组同学 五、 体系结构 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    注:本系列图书的第I、II卷再版时均相应改名为《xxx开发实例大全》(基础卷)及(提高卷),但内容基本无变化,需要的童鞋可自由匹配查找。 内容简介  《PHP开发实战1200例》分为I、II两卷共计1200个例子,包括了开发...

    Oracle从入门到精通

    3、数字和日期都可以使用数学运算符建立表达式。............. 4、定义空(NULL)值....................................... 5、别名................................................... 6、spool +路径............

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    注:本系列图书的第I、II卷再版时均相应改名为《xxx开发实例大全》(基础卷)及(提高卷),但内容基本无变化,需要的童鞋可自由匹配查找。 内容简介  《PHP开发实战1200例》分为I、II两卷共计1200个例子,包括了开发...

    测试培训教材

    按照尽早进行测试的原则,测试人员应该在需求阶段就介入,并贯穿软件开发的全过程。就测试过程本身而言,应该包含以s下几个阶段。  -测试需求的分析和确定。  -测试计划。  -测试设计。  -测试执行。  -...

    C#开发经验技巧宝典

    0800 获取鼠标的按钮个数及鼠标安装状态 485 0801 检测计算机是否存在网络连接 486 0802 如何判断计算机的联机状态 486 0803 获取计算机屏幕分辨率 486 0804 获取计算机当前登录的用户名称 486 18.2 系统...

    QTP技术集锦--总结

    3.1. QTP中几个截取字符串的函数 18 4. "+" "&"的区别 20 5. QTP场景恢复 21 6. QTP中测试环境的初始化 27 7. QTP将数据库中的数据导入到excel 29 8. 在QTP中将数据库的数据导入到EXCEL 29 9. QTP将数据测试驱动 31 ...

    Java面试宝典-经典

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    公共方法类库dll,转换文件格式,处理字符串,处理图片,处理文件等

    此类库由Fly经一年多在一些实际开发项目中运用到的公共方法,特于今日整合在一起已备使用,也希望给朋友们提供一个参考(也有待优化)。 具体类库说明如下: 1.DateDeal.cs 专门用于对日期时间的处理,如时间差、...

    PHP网络编程技术与实践 源码

    2.3.1 字符串的分割与截取 2.3.2 字符串的加密 2.3.3 字符串比较 2.3.4 字符串的转义 2.3.5 字符串的格式化 2.4 PHP的日期时间处理 2.4.1 时间与日期的显示操作 2.4.2 时间与日期的格式化输出 2.5 PHP的URL处理 ...

    千方百计笔试题大全

    199、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 47 200、xml有哪些解析技术?区别是什么? 48 201、你在项目中用到了xml技术的哪些方面?如何实现的? 48 202、用jdom解析xml文件时...

    java面试宝典

    199、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 47 200、xml有哪些解析技术?区别是什么? 48 201、你在项目中用到了xml技术的哪些方面?如何实现的? 48 202、用jdom解析xml文件时...

    QTP描述性编程技术集锦

    3.1. QTP中几个截取字符串的函数 18 4. "+" "&"的区别 20 5. QTP场景恢复 21 6. QTP中测试环境的初始化 27 7. QTP将数据库中的数据导入到excel 29 8. 在QTP中将数据库的数据导入到EXCEL 29 9. QTP将数据测试驱动 31 ...

    最新Java面试宝典pdf版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    Java面试宝典2010版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    Java面试笔试资料大全

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    JAVA面试宝典2010

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    java面试题大全(2012版)

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

Global site tag (gtag.js) - Google Analytics