Преобразовать строку в дату в выражении CASE Oracle SQL - PullRequest
0 голосов
/ 20 января 2020

Я использую следующую инструкцию 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_DATE (' перед TO_CHAR, но я сохраняю получаю ошибку в части «Тогда». Есть ли какие-либо указатели на то, как успешно добавить TO_DATE к этому утверждению? Спасибо! Воздуходувки

Ответы [ 2 ]

2 голосов
/ 20 января 2020

Вы можете использовать литерал даты (который всегда 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
0 голосов
/ 20 января 2020
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 принадлежат одному и тому же типу данных.

...