有一个针对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
函数?
答案 0 :(得分:2)
代替Oraclism
to_number(to_char(current_timestamp, 'HH24MI'))
您可以使用以下标准SQL构造:
100 * EXTRACT(HOUR FROM current_timestamp)
+ EXTRACT(MINUTE FROM current_timestamp)