Когато използвате 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.