带静态数字的ORACLE SQL合并日期

时间:2019-01-30 16:07:10

标签: sql oracle group-by

我在利用Oracle内的合并功能时遇到问题。我正在将数据库切换到Oracle时遇到问题。

这是我想运行的内容: 原始查询(ibm)中的代码

,COALESCE(period_dt, CAST('01-01-1900' AS DATE)) AS PERIOD_DT

在此列中,它返回该列中的period_dt,但是如果没有任何内容,null,0等,则返回的值为日期格式的以下值:01/01/1900

我尝试了以下选项:

COALESCE(TO_DATE(period_dt, 'mm/dd/yyyy'), TO_DATE('01/01/1900', 'mm/dd/yyyy')) period_dt

,case when period_dt = 0 then to_date('01-01-1900', 'mm/dd/yyyy')
  when period_dt = '' then to_date('01-01-1900', 'mm/dd/yyyy')
  when period_dt = NULL then to_date('01-01-1900', 'mm/dd/yyyy')
  else to_date(period_dt,'mm/dd/yyyy')
  END period_dt

使用某些组合,我遇到了从“无效月份”到“不一致的数据类型:预期的DATE得到了NUMBER”的错误,并且由于我无法在select语句中运行此错误,因此我不完全确定我会如何将其放在groupby语句中。您可以提供的任何帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

您可以在Oracle中使用ANSI日期文字:

, COALESCE(period_dt, DATE '1900-01-01') AS PERIOD_DT

period_dt已经是一个日期。如果已满,则显示它;如果为空,则显示1900年1月1日。