Informix `interval` 函数的 Oracle 等效项是啥?
Posted
技术标签:
【中文标题】Informix `interval` 函数的 Oracle 等效项是啥?【英文标题】:What is the Oracle equivalent of the Informix `interval` function?Informix `interval` 函数的 Oracle 等效项是什么? 【发布时间】:2012-06-18 19:24:31 【问题描述】:我的任务是将一些引用 Informix 数据库的脚本转换为与新的 Oracle 数据库兼容。
我想我应该从浏览各个脚本开始,并寻找在 Informix 和 Oracle 之间可能在语法上有所不同的函数调用。对于我遇到的大多数函数调用,我都能找到对应的 Oracle,但是这个让我有点难过:
where f.writetime > current - interval(xxx) day to day
该函数究竟是什么意思,尤其是(xxx)
部分以及Oracle 的等价物是什么?
【问题讨论】:
您可能还会遇到DATETIME(YYYY-mm-dd HH:MM:SS.fffff) YEAR TO FRACTION(5)
。这相当于标准 SQL 中的 TIMESTAMP
。 Informix 有一些不能直接用 SQL 标准类型表示的变体;典型的例子是DATETIME(mm-dd HH:MM) MONTH TO MINUTE
。幸运的是,这种用法很少见。 DATETIME HOUR TO MINUTE
很少见,但您可以轻松地嫁接秒数(为零)。
【参考方案1】:
这不是函数调用 - 它是 Informix SQL 的 INTERVAL
data type literal syntax。
Oracle SQL 也支持interval data type。
我希望 oracle 会给出类似的结果
WHERE f.writetime > current_timestamp - INTERVAL 'xxx' DAY TO DAY
本质上,当写入时间大于当前时间减去 xxx 天时。
【讨论】:
@N West 这很有道理。我基本上把同样的东西放在一起,但不确定要做什么/制作xxx
部分。感谢您的帮助!
当 from 和 to 单位相同时,Oracle 可能不需要 DAY TO DAY
;您可以在标准 SQL 中编写 INTERVAL 'xxx' DAY
。它也可能不会拒绝DAY TO DAY
。 (Informix 总是需要 start 和 end 单元。)以上是关于Informix `interval` 函数的 Oracle 等效项是啥?的主要内容,如果未能解决你的问题,请参考以下文章