小编Ven*_*ree的帖子

Oracle 从 WHERE 子句中提取慢速函数调用

我有一个 oracle 表,其中日期存储为自特定日期以来的分钟数。它看起来像这样:

CREATE TABLE MY_TABLE
(
  SOMETHING     NUMBER(15,1) NOT NULL,
  START_MINUTE  NUMBER(15,1) NOT NULL,
  STOP_MINUTE   NUMBER(15,1) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

我编写了两个函数来在所谓的“分钟”和它们代表的实际日期/时间之间进行转换。它们看起来像这样:

CREATE OR REPLACE FUNCTION FROM_MINUTE (MINUTE_IN IN NUMBER)
RETURN DATE AS
BEGIN
  /* Minute 0 = 12/30/1899 12:00am */
  RETURN (TO_DATE('1899-12-30', 'YYYY-MM-DD') + (MINUTE_IN / 1440));
END FROM_MINUTE;

CREATE OR REPLACE FUNCTION TO_MINUTE (DATE_IN IN DATE)
RETURN NUMBER AS
BEGIN
  /* Minute 0 = 12/30/1899 12:00am */
  RETURN
    (TRUNC(DATE_IN, 'DD') - TO_DATE('12/30/1899', 'MM/DD/YYYY')) * 1440 +
    TO_NUMBER(TO_CHAR(DATE_IN, 'HH24'))  * …
Run Code Online (Sandbox Code Playgroud)

oracle functions

5
推荐指数
1
解决办法
4294
查看次数

标签 统计

functions ×1

oracle ×1