浅谈利用浮点数操作Oracle数据库日期

数据库 Oracle 数据库运维
Oracle日期函数有不少,to_date, to_char, trunc,add_month, months_between, next_day等等,本文提及的时间操作是关于Oracle时间的加减。

众所周知,Oracle的时间可以直接用来加减操作,比如

select sysdate, sysdate - 2 from dual

"SYSDATE"    "SYSDATE-2"

-----------------------------------
"19-5月 -09"    "17-5月 -09"

很明显,sysdate - 2表示的日期-2,也就是2天前的时间,2天后的时间+2就可以了。

但是,有的时候我们不需要2天前或者2天后这么长的时间,我们需要2小时前,或者2分钟前的时间。

但是并没有发现Oracle有关于小时或者分钟直接操作的函数,本人也非常纳闷。

后来查找资料和朋友们的帮助,才知道日期用于加减操作的时候是一个浮点数,于是做了2个实验。

实验1:

select to_char(sysdate, 'yyyy-MM-dd hh24:mi:ss') cur_time, 
       to_char(sysdate - 2 / 24, 'yyyy-MM-dd hh24:mi:ss') time_before_2_hour
  from dual;

"CUR_TIME"                       "TIME_BEFORE_2_HOUR"

-------------------------------------------------------------------
"2009-05-19 09:21:58"    "2009-05-19 07:21:58"

实验2:

select to_char(sysdate, 'yyyy-MM-dd hh24:mi:ss') cur_time, 
       to_char(sysdate - 2 / (24 * 60), 'yyyy-MM-dd hh24:mi:ss') time_before_2_minutes
  from dual;

"CUR_TIME"                      "TIME_BEFORE_2_MINUTES"

---------------------------------------------------------------------
"2009-05-19 09:24:18"    "2009-05-19 09:22:18"

结果显示比较明显了,2小时前就是2/24天,2分钟就是2/(24*60)天,Oracle日期的加减还是day上的加减,不过他是一个浮点数,所以转换成日期之后实际上就是时间上的加减。

【编辑推荐】

  1. Oracle数据库中的字符处理技巧
  2. 善用Oracle表空间设计提升数据库性能
  3. 详解Oracle数据库磁盘I/O优化
责任编辑:彭凡 来源: javaeye
相关推荐

2020-09-15 12:57:46

C 语言浮点数内存

2009-07-15 16:23:54

Java JDBC

2023-07-05 08:00:58

Redis数据库

2017-10-16 10:42:27

前端JavaScript浮点数

2010-07-22 17:39:44

2015-12-02 10:21:34

JavaScript浮点数精度调整

2018-08-24 10:16:23

内存浮点数存储

2009-04-16 09:08:21

Oracle开发经验

2011-05-25 14:10:38

浮点数

2020-10-12 06:38:08

存储定点数

2021-10-19 14:04:28

C++类型数字

2011-03-31 09:55:59

Oracle数据库开发技术

2009-02-03 08:58:13

SQL*Net配置网络应用

2011-06-23 15:26:49

操作系统认证权限

2010-04-14 13:25:15

Oracle数据

2009-10-13 09:43:43

Oracle数据库备份

2010-01-15 15:21:35

C++

2009-04-13 10:06:58

Oracle安全管理

2009-02-01 10:29:04

Oracle数据库管理

2022-06-15 15:44:21

无损数据压缩鸿蒙
点赞
收藏

51CTO技术栈公众号