Ваша текущая временная метка не имеет смысла, поскольку она указывает время как 18
часов, то есть 6 часов вечера, но затем оно также указывает индикатор меридиана AM
, который означает раньше, чем полдень.Таким образом, вы можете удалить AM
из вашего шаблона TO_TIMESTAMP
:
SELECT TO_TIMESTAMP ('08-FEB-19 18.41.41.000000', 'DD-Mon-RR HH24.MI.SS.FF')
FROM dual;
08-FEB-19 06.41.41.000000000 PM
Обратите внимание, что на самом деле в Oracle нет такой вещи, как временная метка формата 12 или 24 часа.Скорее, если вы хотите просмотреть свою метку времени Oracle в 24-часовом формате, вы можете сделать что-то вроде вызова TO_CHAR
с соответствующей маской 24-часового формата:
SELECT
TO_CHAR(TO_TIMESTAMP ('08-FEB-19 18.41.41.000000', 'DD-Mon-RR HH24.MI.SS.FF'),
'DD-Mon-RR HH24.MI.SS.FF') AS ts
FROM dual;
08-Feb-19 18.41.41.000000000
Демо
Редактировать:
Если вы хотите преобразовать строку метки времени с 12-часовым временем и компонентом AM / PM, мы можем попробовать:
SELECT
TO_CHAR(
TO_TIMESTAMP ('08-FEB-19 06.41.41.000000 PM', 'DD-Mon-RR HH.MI.SS.FF PM'),
'DD-Mon-RR HH24.MI.SS.FF')
FROM dual;