我有一个 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)