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 等效项是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Informix 的 Row_number() 函数

什么是informix for mysql now() 中的replace 函数

informix常用函数

informix常用函数

Informix:在 Java 中使用存储过程

Informix:如何平均存储过程的结果