MariaDB zawiera wiele funkcji, które umożliwiają zwracanie wartości czasu i daty i godziny w różnych formatach.
Dwie funkcje pozwalają sformatować część czasu przy użyciu zegara 12-godzinnego, przy czym oznaczenie AM/PM to DATE_FORMAT()
i TIME_FORMAT()
.
Istnieje wiele specyfikatorów formatu, których można używać z tymi funkcjami, ale tylko kilka zwracających oznaczenie AM/PM.
%r
Specyfikator formatu
%r
Specyfikator formatu służy do formatowania godziny w formacie 12-godzinnym, po którym następuje oznaczenie AM/PM.
Przykład:
SELECT DATE_FORMAT('2030-03-10 18:10:37', '%r');
Wynik:
+------------------------------------------+ | DATE_FORMAT('2030-03-10 18:10:37', '%r') | +------------------------------------------+ | 06:10:37 PM | +------------------------------------------+
Wynikowy czas jest wyświetlany tak, jakby został sformatowany przy użyciu następującego ciągu formatującego:'%I:%i:%S %p'
.
Oczywiście, czy zwraca AM
lub PM
zależy od faktycznego czasu. Czasy przed 12:00:00
zwróć AM
i czasy po tym zwracają PM
.
Oto, co się stanie, jeśli zmienimy czas na przed 12:00:00
:
SELECT DATE_FORMAT('2030-03-10 06:10:37', '%r');
Wynik:
+------------------------------------------+ | DATE_FORMAT('2030-03-10 06:10:37', '%r') | +------------------------------------------+ | 06:10:37 AM | +------------------------------------------+
Zarówno DATE_FORMAT()
i TIME_FORMAT()
zaakceptuj %r
specyfikator formatu, więc możemy użyć tego samego specyfikatora formatu z TIME_FORMAT()
funkcja:
SELECT TIME_FORMAT('06:10:37', '%r');
Wynik:
+-------------------------------+ | TIME_FORMAT('06:10:37', '%r') | +-------------------------------+ | 06:10:37 AM | +-------------------------------+
TIME_FORMAT()
akceptuje wartości czasu oraz daty i godziny, natomiast DATE_FORMAT()
akceptuje tylko wartości daty i godziny. Jednak TIME_FORMAT()
akceptuje tylko specyfikatory formatu dla godzin, minut i sekund. Widząc jako %r
zwraca godziny, minuty i sekundy, to też jest akceptowane.
%p
Specyfikator formatu
%p
Specyfikator formatu to bardziej szczegółowy specyfikator formatu, który jest używany wyłącznie do reprezentowania desygnatora AM/PM. Zwykle jest używany w połączeniu z innymi specyfikatorami formatu, aby zwrócić czas w formacie niestandardowym.
Jak wspomniano, %r
specyfikator formatu formatuje czas tak, jakby był sformatowany przy użyciu następującego ciągu formatującego:'%I:%i:%S %p'
.
Użyjmy tego ciągu wprost:
SELECT TIME_FORMAT('18:10:37', '%I:%i:%S %p');
Wynik:
+----------------------------------------+ | TIME_FORMAT('18:10:37', '%I:%i:%S %p') | +----------------------------------------+ | 06:10:37 PM | +----------------------------------------+
Otrzymujemy więc ten sam wynik, co przy użyciu %r
specyfikator formatu.
Jednak jedną z zalet korzystania z tej metody jest to, że możemy skonstruować dane wyjściowe w nasz własny, niestandardowy sposób.
Na przykład:
SELECT TIME_FORMAT('18:10:37', '%l:%i %p');
Wynik:
+-------------------------------------+ | TIME_FORMAT('18:10:37', '%l:%i %p') | +-------------------------------------+ | 6:10 PM | +-------------------------------------+
Tutaj użyliśmy %l
aby zwrócić część godzinową bez wiodącego zera. Pominęliśmy również część sekundową.
Zobacz ciągi formatujące MariaDB, aby uzyskać pełną listę specyfikatorów formatu, których można używać z tymi funkcjami.