Oracle 安全区间算法

Oracle 安全区间算法,oracle,oracle11g,oracle11gr2,Oracle,Oracle11g,Oracle11gr2,此查询适用于我们的错误 select add_months(date '2011-01-31', 1) from dual; ,而这个: select date '2011-01-31' + interval '1' month from dual; 返回 ORA-01839: date not valid for month specified 那么,使用intervalliteral添加interval是否有任何安全的方法呢?这遵循了ANSI规定的将intervals添加到日期的行为1

此查询适用于我们的错误

select add_months(date '2011-01-31', 1) from dual;
,而这个:

select date '2011-01-31' + interval '1' month from dual;
返回

ORA-01839: date not valid for month specified

那么,使用
interval
literal添加interval是否有任何安全的方法呢?

这遵循了ANSI规定的将
interval
s添加到日期的行为1。这也有记录:

当间隔计算返回日期时间值时,结果必须是实际的日期时间值或数据库返回错误。例如,下面两条语句返回错误:

从DUAL中选择TO_DATE('2004年8月31日','DD-MON-YYYY')+TO_-YMINTERVAL('0-1')

从DUAL中选择TO_DATE('29-FEB-2004','DD-MON-YYYY')+TO_-YMINTERVAL('1-0')

另一方面,如果生成的月份的天数较少,则函数只会给出该月份的最后一天,我相信创建此函数是为了解决此问题


一,

b)执行算法以保持数据的完整性
生成的结果的日期时间数据类型。这可能涉及从或到
紧接着的下一步更为重要。如果
的数据类型是时间,然后
按小时计算的算术是按模数进行的
24如果手术室是
一年一个月的间隔,则结果的天字段为
与or的DAY字段相同。
c) 如果在上一步骤之后
结果超出了系统的允许值范围
字段或结果根据的自然规则无效
日期和时间,然后引发异常条件:数据
异常日期时间字段溢出。

@NullUserException:是的,这很有趣,谢谢