需要Oracle中2列的最新日期

时间:2017-03-01 02:25:55

标签: database oracle oracle11g oracle10g oracle-sqldeveloper

作为我项目的一部分,我需要在oracle表的第三列中显示两列的最新日期。如果日期相同,则应根据时间显示最新日期。请帮我。提前谢谢。

E.g.1:

col1                 col2                col3
12-FEB-17 03:24:23   15-FEB-17 08:12:52  15-FEB-17 08:12:52

它应该在col3中显示col2数据,因为它比col1最近3天。

E.g.2:

col1                col2               col3
02-FEB-17 03:01:57  02-FEB-17 03:01:59 02-FEB-17 03:01:59

它应该在col3中显示col2数据,因为它比col1最近2秒。

3 个答案:

答案 0 :(得分:1)

您只需使用GREATEST()函数即可。例如:

with test as
( select to_date( '12-FEB-2017 03:24:23','DD-MON-YYYY HH24:MI:SS' ) col1,
         to_date( '15-FEB-2017 08:12:52','DD-MON-YYYY HH24:MI:SS' ) col2 from dual union all
  select to_date( '02-FEB-2017 03:01:57','DD-MON-YYYY HH24:MI:SS' ) ,
         to_date( '02-FEB-2017 03:01:59','DD-MON-YYYY HH24:MI:SS' ) from dual 
)
select col1, col2, greatest( col1, col2 ) col3
from test


COL1                 COL2                 COL3
-------------------- -------------------- --------------------
12-FEB-2017 03:24:23 15-FEB-2017 08:12:52 15-FEB-2017 08:12:52
02-FEB-2017 03:01:57 02-FEB-2017 03:01:59 02-FEB-2017 03:01:59

答案 1 :(得分:0)

使用import { makeDOMDriver, h1, a } from '@cycle/dom'; ,但使用greatest。如果没有NVL,如果您有NVL s,那么null将成为null的输出

greatest

答案 2 :(得分:0)

我真的不喜欢使用编造日期,因为两者都是空的怎么办?你会得到1901-01-01。更好的是,使用COALESCE返回非空值:

WITH your_table
     AS (SELECT 'COL1 Greater' test, SYSDATE col1, SYSDATE - 10 col2
           FROM DUAL
         UNION ALL
         SELECT 'COL2 Greater', SYSDATE col1, SYSDATE + 10 col2
           FROM DUAL
         UNION ALL
         SELECT 'COL1 null', NULL, SYSDATE col2
           FROM DUAL
         UNION ALL
         SELECT 'Both null', NULL, NULL
           FROM DUAL)
SELECT test
     , TO_CHAR (col1, 'YYYY.MM.DD') col1
     , TO_CHAR (col2, 'YYYY.MM.DD') col2
     , TO_CHAR (GREATEST (COALESCE (col1, col2), COALESCE (col2, col1)), 'YYYY.MM.DD') AS col3
  FROM your_table;


TEST         COL1       COL2       COL3      
------------ ---------- ---------- ----------
COL1 Greater 2017.03.01 2017.02.19 2017.03.01
COL2 Greater 2017.03.01 2017.03.11 2017.03.11
COL1 null               2017.03.01 2017.03.01
Both null