如何将Oracle特定功能TO_NUMBER重写为ANSI SQL

时间:2018-10-10 15:32:17

标签: oracle postgresql ansi-sql

有一个针对Oracle数据库运行的旧版软件。我试图将其推广到Docker测试中,因此我准备了具有数据库模式的PostgreSQL映像。现在,我尝试针对Postgres DB运行该应用程序,但是出现以下错误:

org.postgresql.util.PSQLException: ERROR: function to_number(text) does not exist

所以我查看了代码,并在某些选择中找到了以下结构:

to_number(to_char({0},'HH24MI')) <= to_number(to_char({1},'HH24MI'))
to_number(to_char({0},'HH24MI')) > to_number(to_char({1},'HH24MI'))

由于我不是数据库专家,因此我假设此TO_NUMBER是Oracle特定的功能。在这种情况下,它可以用作过滤器,以返回指定时间范围内的记录。

有没有一种方法可以简单地用ANSI SQL中的一些类似函数替换此TO_NUMBER函数?

1 个答案:

答案 0 :(得分:2)

代替Oraclism

to_number(to_char(current_timestamp, 'HH24MI'))

您可以使用以下标准SQL构造:

100 * EXTRACT(HOUR   FROM current_timestamp)
    + EXTRACT(MINUTE FROM current_timestamp)