【发布时间】:2020-05-26 09:00:27
【问题描述】:
在我们项目中推荐使用 DECODE 函数的 oracle 中,转换日期 01-01-1900 时会出现问题。 考虑下面的解码
CAST(DECODE(COL1,'A',DATECOL,TO_DATE('01011900','DDMMYYYY')) AS DATE) - (The CAST is also a mandatory guideline)
If,
COL1 DATECOL
A 2019-04-05
B 2018-01-01
C 2020-05-01
我得到的结果数据为
COL1 OUTPUT
A 2019-04-05
B 2000-01-01
C 2000-01-01
DECODE 函数给了我 2000-01-01 而不是 1900-01-01。 我已经检查了 NLS 参数并通过修改 TO_DATE 函数中的不同内容来涉猎。什么都没解决。
【问题讨论】:
-
这是你的真实代码吗?它应该可以工作。
-
为我工作:dbfiddle.uk/…
-
工作正常,我同意。但是,如果 DATECOL 列的数据类型是 DATE,为什么还要将它转换为 DATE?这就够了:
DECODE(COL1, 'A', DATECOL, DATE '1900-01-01')
标签: oracle date oracle-sqldeveloper decode