`
michael8335
  • 浏览: 184083 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个由于错误使用interval导致的错误

阅读更多
    今天发现失败了一条UT用例,失败原因是由于在向数据库插入时间时,时间的值是通过如下语句查询出来的
    select  sysdate - interval '4' month from dual;
    这句SQL的意思就是查询4个月前的今天,但是由于使用了interval '4' month这种方式,查询的是绝对时间距离,就是说这句查询等于当前时间,只是月份-4,其余的都不变,而今天又是一个特殊的日子,是什么日子呢,就是举世无双的公元2012年6月30日,那通过sysdate - interval '4' month计算的结果就是2012年2月30日,就连幼儿园的小朋友都知道,世界上肯定没有这一天,所以该语句执行肯定失败,结果就导致用例失败了,但是为什么昨天没有失败呢??那是因为今年是2012年了(神奇的年份),是闰年,所以昨天计算结果就是2012年2月29日,这个日期是正确的。
关于Oracle的interval类型,下面这两篇文章都做了详细讲解,
http://www.iteye.com/topic/148943
http://bjtdeyx.iteye.com/blog/1447301
下面就说一下如何解决这个问题,
1、非常简单,直接把月换算成日,即采用如下方式:
select sysdate -122 from dual;
经验证,这种方式是采用日期相减,即从当前日期向前推算有效日期,绝对不会出现不存在的日期
2、采用Oracle自带ADD_MONTHS(x, y)函数,该函数用于计算x加上y个月的结果。如果y是负数,就从x中减去y个月。所以上述语句又可以更改为如下
select ADD_MONTHS(sysdate,-4) from dual;
其实出现这个错误,主要是不完全了解interval这种类型,直接拿来就用,所以才出出现如此低级错误,不过从这个错误中倒是可以学到一点Oracle的知识,还是不错的
0
1
分享到:
评论

相关推荐

    pandas-doc-1.5.2.pdf

    3, 处理了访问W3, github超时或受限导致的错误4, 处理了源码中因image资源不存在导致的图片缺失5, 添加了书签和TOC6, 压缩和消除了Traceback附带的大段异常代码。7, 处理了因latex的sty文件不存在导致的报错。8...

    RFID数据流近似去重

    RFID不需要接触即可检测射频识别标签的特性,因此被用于很多领域,如商业、军事和医学,导致了大量的RFID数据生成,沃尔玛采用RFID技术是一个典型的RFID在商业领域应用的例子。 然而,RFID技术也带来一系列的问题,...

    论文研究-组合与概率的连续特征权衡量化方法.pdf

    基于最小描述长度以及组合与概率理论,提出连续特征量化的权衡标准,能够在量化所导致的分类错误与量化区间信息之间得到合理的权衡;基于该权衡标准提出一种有效的动态规划量化算法,以找到最好的量化结果;量化后的...

    Access日期和时间函数

    如果计算的日期超前 100 年(减去的年度超过 date 中的年份),就会导致错误发生。 如果 number 不是一个 Long 值,则在计算时取最接近的整数值来计算。 注意 DateAdd 返回值的格式由 Control Panel设置决定,而不是...

    IPv6.rar

    工作原理:自动将48bit的以太网MAC地址扩展成64bit,再挂在一个64bit的前缀后面,组成一个IPV6地址 一、将48位的MAC地址从中间分开,插入一个固定数值FFFE 0050:3EE4:4C00-->0050:3EFF:FEE4:4C00 二、将第7个...

    微信小程序 swiper组件详解及实例代码

    微信小程序 swiper组件 常用属性: 效果图:  swiper.wxml添加代码: ... autoplay={{autoplay}} interval={{interval}} duration={{duration}} bindchange=bindchangeTag> </swiper-item

    Oracle9i的init.ora参数中文说明

    说明: 指定一个字符串值, 设置 TIME 数据类型的默认值, 该数据类型包含 HOUR, MINUTE 和 SECOND 这几个日期时间字段。 语法: TIME '09:26:50' (将值存储为 7 个字节)。 默认值: 从 NLS_TERRITORY 中获得 nls_time...

    ngx-observable-lifecycle:用于观察(ivy编译的)角度分量的生命周期的库

    假设我们正在构建一个简单的库函数,该函数自动取消订阅在组件内手动订阅的可观察对象。 我们将其实现为RxJS运算符,该运算符可以按以下方式使用: // ./src/app/lib-example/lib-example.component.ts#L12-L12 ...

    LINGO软件的学习

    ① 当显式罗列成员时,必须为每个成员输入一个不同的名字,中间用空格或逗号搁开,允许混合使用。 例2.1 可以定义一个名为students的原始集,它具有成员John、Jill、Rose和Mike,属性有sex和age: sets: students/...

    sublime-robotype:自动模拟剪贴板中的输入文本

    您可以控制打字速度、拼写错误的可能性以及打字员对拼写错误的响应能力。 打字速度是可变的,因此它由低阈值和高阈值控制。 robotype_keystroke_interval_low :最快的击键次数,以毫秒为单位。 (默认为 10) ...

    mysql数据库的基本操作语法

    外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。 也就是说从表的外键值必须在主表中能找到或者为空。 当主表的记录被从表参照时,主表的记录将不...

    dd-wrt fantasia

    目前有三个QoS功能,使用时只能开启一个,在不同QoS间切换或改变PPPoE服务器设置后建议重启路由 1.1 - Build 20120303 修正“设置”--“基本设置”中,“定时重新连接”功能启用时会结束“PPPoE服务器”客户端进程...

    chrome-app-pinoccio

    ###waitForUnplug 这将导致系统监视 USB 设备并在它不再看到连接的 Pinoccio 设备时报告。 参数: 取消- (布尔值) - 如果为真,这将取消之前运行的拔出循环。 interval - (Number) - 检查之间等待的毫秒数。 这...

    javascript setinterval 的正确语法如何书写

    前几天我用setinterval 写了一个小程序,这个setinterval是用来干什么的我就不解释了。 写的方法在其它的浏览器里都能用,后来测试组的同事拿去一测就出了问题。因为她们爱用360,还有IE。我两天之内百思不其解,IE...

Global site tag (gtag.js) - Google Analytics