【问题标题】:SQL Teradata Date Case When Then Loses Date FormatSQL Teradata Date Case When Then 丢失日期格式
【发布时间】:2014-08-14 19:14:39
【问题描述】:

当我执行以下语句时,epc.LAST_LICPLT_REPRINT_DT 中的日期格式丢失:

 ,CASE When epc.LAST_LICPLT_REPRNT_DT is null Then ''
 ELSE '' + epc.LAST_LICPLT_REPRNT_DT 
 END as LAST_LICPLT_REPRNT_DT

我尝试过使用

  cast(epc.LAST_LICPLT_REPRNT_DT as date)

 cast(epc.LAST_LICPLT_REPRNT_DT as DATE FORMAT 'YYYYMMDD')

下班。

【问题讨论】:

  • 如果字段是日期,这没有意义:'' + epc.LAST_LICPLT_REPRNT_DT。您需要在返回字符串或返回日期之间进行选择。
  • 你到底想做什么?我所能看到的是,如果epc.LAST_LICPLT_REPRNT_DT 为空,则将其替换为空字符串,否则将显示该列。用 null 换一个空字符串对我来说似乎效率不高。
  • 去掉“?”在数据中表示 null
  • 哦,这只是 SQL 助手中的一个选项。在我的版本中,它位于Tools>Options>Data Format

标签: sql teradata


【解决方案1】:
SELECT COALESCE(CAST(epc.LAST_LICPLT_RPRNT_DT AS VARCHAR(10)), '') --Return Empty String If Date Null
     , COALESCE(epc.LAST_LICPLT_RPRNT_DT, DATE '9999-12-31') -- Return High Date if Date is Null
  FROM {MyDB}.{MyTable}
 WHERE epc.LAST_LICPLT_RPRNT_DT IS NULL;

【讨论】:

    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2022-11-30
    • 2020-11-29
    相关资源
    最近更新 更多