在CASE表达式Oracle SQL中将字符串转换为日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在CASE表达式Oracle SQL中将字符串转换为日期相关的知识,希望对你有一定的参考价值。

我正在使用以下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添加到此语句的任何指针?谢谢!鼓风机

答案
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语句的所有可能结果都属于同一数据类型。

另一答案

您可以使用日期文字(始终为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

以上是关于在CASE表达式Oracle SQL中将字符串转换为日期的主要内容,如果未能解决你的问题,请参考以下文章

在 Javascript 中将字符串转换为 Pascal Case(又名 UpperCamelCase)

用于在 java 中将 CamelCase 转换为 camel_case 的正则表达式

在 Oracle SQL 中将纪元时间转换为正常的日期时间格式

sql字符串转换成日期

oracle 中将系统时间转换为毫秒的sql 怎么写?

如何在 SQL 中将 CASE 表达式与 SUM 函数一起使用?