Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да добавите индикатора Meridiem (AM/PM) към времева стойност в Oracle

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:SQL заявка, която връща редове само с числови стойности

  2. Защо CONNECT BY LEVEL в таблица връща допълнителни редове?

  3. разлика между клауза ON и клауза using в sql

  4. Агрегиране на редове в Oracle SQL оператор

  5. Намиране на броя на знаците и числата в низ