Столбец varchar в таблице содержит даты в формате «05/13/2019 20:48:13 PM». Он может содержать либо одну дату, либо несколько дат, соединенных с pipe |. Я использую этот запрос, чтобы получить самый первый запрос, и пытаюсь преобразовать его в метку времени.
Select (CASE WHEN charindex('AM', COMPL_DATE)>=1 OR charindex('PM', COMPL_DATE) >= 1
THEN TO_TIMESTAMP ( SPLIT_PART( COMPL_DATE, '|' , 1), 'MM/DD/YYYY hh24:mi:ss AM')
ELSE TO_TIMESTAMP ( SPLIT_PART( COMPL_DATE, '|' , 1), 'MM/DD/YYYY hh:mi:ss')
END
) from some_table.
Я получаю эту ошибку Не могу разобрать '03/23/2019 20:56:22 PM'как отметка времени в формате' ММ / ДД / ГГГГ чч24: ми: сс AM '.
Это не значит, что он не работает для всех строк. Есть несколько строк, для которых это не удается. Однако, когда я использую эти данные для отдельного запуска, вот так -
with tab as ( select '03/23/2019 20:56:22 PM' COMPL_DATE from dual )
SELECT
(CASE WHEN charindex('AM',COMPL_DATE)>=1 OR charindex('PM',COMPL_DATE) >= 1
THEN TO_TIMESTAMP ( SPLIT_PART( COMPL_DATE, '|' , 1), 'MM/DD/YYYY hh:mi:ss AM')
ELSE TO_TIMESTAMP ( SPLIT_PART( COMPL_DATE, '|' , 1), 'MM/DD/YYYY hh24:mi:ss')
END
) result
FROM tab ;
Работает нормально.
Любая помощь приветствуется.