Когато използвате TO_CHAR() функция за форматиране на стойност за дата и час в Oracle Database, можете да добавите индикатора за меридием (AM/PM), като просто добавите или AM или PM към вашия модел на формат.
След това Oracle показва подходящия индикатор за меридием, в зависимост от това дали стойността на времето е AM или PM.
Можете да го предоставите с всякакви главни или малки букви и със или без точки (напр. AM , A.M. am , a.m и т.н.). След това Oracle ще покаже индикатора на меридиема, както е посочено.
Пример
Ето пример за демонстрация:
SELECT TO_CHAR(timestamp '2030-12-30 08:30:45', 'HH:MI:SS AM')
FROM DUAL; Резултат:
08:30:45 AM
В този случай времето е ante meridiem и така резултатът има AM добавено.
AM срещу PM
Хубавото при него е, че Oracle отчита дали е сутрин или вечер и показва приложимия индикатор за меридием.
Ето какво се случва, когато променя времето на PM стойност:
SELECT TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM')
FROM DUAL; Резултат:
06:30:45 PM
Индикаторът на меридиема вече е PM, въпреки че моят форматен низ е AM . Oracle беше достатъчно умен, за да знае, че времето е след меридием.
Горни срещу малки букви
Промяната на главния регистър на елемента на формата променя главния регистър на резултата:
SELECT
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM') AS "Uppercase",
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS am') AS "Lowercase",
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS Am') AS "Mixed"
FROM DUAL; Резултат:
Uppercase Lowercase Mixed ______________ ______________ ______________ 06:30:45 PM 06:30:45 pm 06:30:45 Pm
Точки срещу без точки
Можете да включите точки, ако предпочитате:
SELECT
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS A.M.') AS "Uppercase",
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS a.m.') AS "Lowercase",
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS A.m.') AS "Mixed"
FROM DUAL; Резултат:
Uppercase Lowercase Mixed ________________ ________________ ________________ 06:30:45 P.M. 06:30:45 p.m. 06:30:45 P.M.
Въпреки това, забележете, че това се отрази на индикатора за меридием със смесени случаи.
Днешна дата и час
Тук предавам SYSDATE за да получите текущата дата/час:
SELECT
TO_CHAR(SYSDATE, 'HH:MI:SS A.M.')
FROM DUAL; Резултат:
07:55:57 P.M.