`

Oracle时间运算(日期截取及四舍五入)

阅读更多

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函数指定了格式,事情就变得有点复杂了,不过核心思想还是不变: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

分享到:
评论

相关推荐

    oracle从入门到精通

    3、数字和日期都可以使用数学运算符建立表达式。 ...............................................................9 4、定义空(NULL)值 ....................................................................

    Oracle从入门到精通

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

    2009达内SQL学习笔记

    大多数SQL实现支持以下类型的函数: 文本处理, 算术运算, 日期和时间, 数值处理。 Null:空值 空值当成无穷大处理,所有空值参与的运算皆为空。 空值与空值并不相等,因为空值不能直接运算。 如:prod_price...

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

    实例143 获取系统中的特定日期和时间 171 实例144 比较时间的大小 172 实例145 计算考试时间 173 实例146 倒计时 173 实例147 网页闹钟 174 实例148 计算程序运行时间 176 第3章 Web页面交互 178 3.1 获取表单元素的...

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

    实例143 获取系统中的特定日期和时间 171 实例144 比较时间的大小 172 实例145 计算考试时间 173 实例146 倒计时 173 实例147 网页闹钟 174 实例148 计算程序运行时间 176 第3章 Web页面交互 178 3.1 获取表单元素的...

    C#编程经验技巧宝典

    数据处理 91 <br>5.1 数字处理技巧 92 <br>0140 如何对计算结果四舍五放入 92 <br>0141 如何将商品金额小写转换成大写 92 <br>0142 如何根据生日自动计算员工年龄 93 <br>0143 如何设置...

    C#开发经验技巧宝典

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

    vc++ 应用源码包_1

    系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++...

    vc++ 应用源码包_2

    系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++...

    vc++ 应用源码包_6

    系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) IOCP 完成端口编程 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例...

    vc++ 应用源码包_5

    系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) IOCP 完成端口编程 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例...

    vc++ 应用源码包_3

    系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) IOCP 完成端口编程技术 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等...

    vc++ 开发实例源码包

    系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++...

Global site tag (gtag.js) - Google Analytics