2013-06-24 4 views
0

Как преобразовать следующий штамп времени в Oracle:Преобразование Oracle Дата и время

 
12-MAY-2013 12:00:00 AM 

к этому

 
11-MAY-2013 24:00:00 

Спасибо.

+1

Я сильно подозреваю, что любой, кто пытается ответить, нуждается в большем контексте. Для начала вы указали * текстовые * представления, тогда как я ожидаю, что фактическое хранилище будет несколько иным. Чего вы пытаетесь достичь? –

+0

Я пытаюсь найти способ преобразования формата даты и времени Oracle. Если исходное хранилище в базе данных использует следующий формат '12 -MAY-2013 12:00 AM ', как мне преобразовать вывод моей инструкции SQL, чтобы формат стал «11 -MAY-2013 24:00»? Могу ли я использовать функцию TO_DATE для достижения этой цели? если да, то какой формат маскировки я могу использовать? – tabing16

+0

Это действительно не дает больше контекста ... –

ответ

1

ОБНОВЛЕНО Возможное решение

SELECT CASE WHEN dt - TRUNC(dt) = 0 
      THEN TO_CHAR(TRUNC(dt) - 1, 'DD-Mon-YYYY') || ' 24:00:00' 
      ELSE TO_CHAR(dt, 'DD-Mon-YYYY HH24:MI:SS') 
     END dt 
    FROM 
(
    SELECT TO_DATE('12-MAY-2013 12:00:00 AM', 'DD-Mon-YYYY HH:MI:SS AM') dt 
    FROM dual 
) 

Выход:

 
|     DT | 
------------------------ 
| 11-May-2013 24:00:00 | 

Вот SQLFiddle демо

Оригинальный ответ Попробуйте

SELECT TO_CHAR(TO_DATE('12-MAY-2013 12:00:00 AM', 'DD-Mon-YYYY HH:MI:SS AM'), 'DD-Mon-YYYY HH24:MI:SS') dt 
FROM dual 

Вот SQLFiddle демо

+0

Это не дает выход, указанный ОП. OP хочет, чтобы «полночь в начале 12 мая» отображалась как «24:00 в конце 11 мая». –

+0

@ JonSkeet достаточно. Спасибо за указание. Обновлен ответ. – peterm

+0

@ user2515080 См. Обновленный ответ для возможного решения. – peterm

0

вы не можете достичь этого с помощью стандартных функций Oracle. Oracle использует значения 0 - 23, если вам нужно показать полночь, как 24:00, вам нужно написать свою собственную функцию.