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.