在 CASE 表达式中将字符串转换为日期 Oracle SQL
Convert String to Date in CASE expression 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
添加到此语句的任何指示?
您可以使用日期文字(始终为 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
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 语句的所有可能结果都属于同一数据类型。
我正在使用以下 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
添加到此语句的任何指示?
您可以使用日期文字(始终为 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
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 语句的所有可能结果都属于同一数据类型。