Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak dodać wskaźnik Meridiem (AM/PM) do wartości czasu w Oracle?

Używając TO_CHAR() funkcja formatowania wartości daty i godziny w bazie danych Oracle, możesz dodać wskaźnik meridiem (AM/PM), po prostu dodając albo AM lub PM do Twojego modelu formatu.

Oracle wyświetla następnie odpowiedni wskaźnik meridiem, w zależności od tego, czy wartość czasu to AM czy PM.

Możesz podać go za pomocą dowolnej wielkiej lub małej litery, z kropkami lub bez (np. AM , A.M. am , a.m itp.). Oracle wyświetli wskaźnik meridiem zgodnie z opisem.

Przykład

Oto przykład do zademonstrowania:

SELECT TO_CHAR(timestamp '2030-12-30 08:30:45', 'HH:MI:SS AM') 
FROM DUAL;

Wynik:

08:30:45 AM

W tym przypadku czas jest ante meridiem, więc wynik ma AM dołączono.

przed południem a wieczorem

Dobrą rzeczą jest to, że Oracle sprawdza, czy jest to AM, czy PM, i wyświetla odpowiedni wskaźnik meridiem.

Oto co się dzieje, gdy zmieniam czas na wartość PM:

SELECT TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM') 
FROM DUAL;

Wynik:

06:30:45 PM

Wskaźnik meridiem to teraz PM, chociaż mój ciąg formatu to AM . Oracle był na tyle sprytny, że wiedział, że czas jest po meridiem.

Wielkie a małe litery

Zmiana wielkości liter elementu formatu zmienia wielkość liter w wyniku:

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;

Wynik:

     Uppercase      Lowercase          Mixed 
______________ ______________ ______________ 
06:30:45 PM    06:30:45 pm    06:30:45 Pm    

Kropki kontra brak kropek

Jeśli wolisz, możesz dodać kropki:

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;

Wynik:

       Uppercase        Lowercase            Mixed 
________________ ________________ ________________ 
06:30:45 P.M.    06:30:45 p.m.    06:30:45 P.M.   

Chociaż zauważ, że wpłynęło to na wskaźnik meridiem mieszanych wielkości liter.

Dzisiejsza data i godzina

Tutaj przekazuję SYSDATE aby uzyskać aktualną datę/godzinę:

SELECT 
    TO_CHAR(SYSDATE, 'HH:MI:SS A.M.')
FROM DUAL;

Wynik:

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. Dlaczego otrzymuję ten wyjątek SQLSyntaxErrorException:ORA-00933:Polecenie SQL nie zostało poprawnie zakończone, gdy próbuję wykonać to zapytanie JDBC?

  2. Symulowane OLAP

  3. Zakleszczenia w Oracle

  4. Napraw błąd „ORA-01790:wyrażenie musi mieć ten sam typ danych co odpowiadające wyrażenie”

  5. Spojrzenie na Oracle Group-by Bug