【问题标题】:Convert String to Date in CASE expression Oracle SQL在 CASE 表达式 Oracle SQL 中将字符串转换为日期
【发布时间】:2020-06-01 17:44:20
【问题描述】:

我正在使用以下 CASE 表达式,但我希望该字段是日期而不是字符串格式:

CASE WHEN TO_CHAR(DATE, 'MM/DD/YYYY') = '01/01/1800' THEN '01/01/2029'  
         ELSE TO_CHAR(DATE, 'MM/DD/YYYY')
     END as ENDDATE,

我尝试在TO_CHAR 之前添加TO_DATE(,但在Then 部分不断出现错误。有关如何成功将TO_DATE 添加到此语句的任何指针?

【问题讨论】:

    标签: sql oracle case to-date to-char


    【解决方案1】:

    您可以使用日期文字(始终为 yyyy-mm-dd)并将其直接与您的 date_column 进行比较:

    case when trunc(date_column) = date '1800-01-01' then date '2029-01-01'
         else date_column
    end as enddate
    

    【讨论】:

      【解决方案2】:
      select 
      case when date_column=to_date('01/01/1800','dd/mm/yyyy') then to_date('01/01/2029','dd/mm/yyyy')
           else date_column end as enddate
      from dual;
      

      您只需确保 case 语句的所有可能结果都属于同一数据类型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-14
        • 2019-03-29
        相关资源
        最近更新 更多