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.