如何将 Oracle 特定函数 TO_NUMBER 重写为 ANSI SQL
How to rewrite Oracle specific function TO_NUMBER to ANSI SQL
有一个针对 Oracle 数据库的遗留软件 运行ning。我试图将其概括为 Docker 测试,因此我准备了一个带有数据库模式的 PostgreSQL 图像。现在我正尝试 运行 该应用程序针对 Postgres 数据库,但出现以下错误:
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 的函数。在这种情况下,它用作过滤器以过滤指定时间范围内的 return 条记录。
有什么方法可以简单地用 ANSI SQL 中的一些类似函数替换此 TO_NUMBER
函数?
代替神谕
to_number(to_char(current_timestamp, 'HH24MI'))
您可以使用此标准 SQL 构造:
100 * EXTRACT(HOUR FROM current_timestamp)
+ EXTRACT(MINUTE FROM current_timestamp)
有一个针对 Oracle 数据库的遗留软件 运行ning。我试图将其概括为 Docker 测试,因此我准备了一个带有数据库模式的 PostgreSQL 图像。现在我正尝试 运行 该应用程序针对 Postgres 数据库,但出现以下错误:
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 的函数。在这种情况下,它用作过滤器以过滤指定时间范围内的 return 条记录。
有什么方法可以简单地用 ANSI SQL 中的一些类似函数替换此 TO_NUMBER
函数?
代替神谕
to_number(to_char(current_timestamp, 'HH24MI'))
您可以使用此标准 SQL 构造:
100 * EXTRACT(HOUR FROM current_timestamp)
+ EXTRACT(MINUTE FROM current_timestamp)