W MySQL możesz użyć TIME_FORMAT()
funkcja formatowania wartości czasu.
Ta funkcja działa tak samo jak DATE_FORMAT()
funkcji, z tą różnicą, że wartość może być sformatowana tylko w godzinach, minutach, sekundach i mikrosekundach.
Zobacz tabelę na dole tego artykułu, aby zobaczyć listę specyfikatorów formatu, których można użyć z tą funkcją.
Składnia
Składnia wygląda tak:
TIME_FORMAT(time,format)
Gdzie time
to wartość czasu, którą chcesz sformatować, a format
jest ciągiem formatu (określa to, w jaki sposób wartość czasu jest faktycznie sformatowana).
Przykład 1 – Podstawowe użycie
Oto przykład do zademonstrowania.
SELECT TIME_FORMAT('14:35:27', '%r') AS 'Result';
Wynik:
+-------------+ | Result | +-------------+ | 02:35:27 PM | +-------------+
W tym przykładzie użyto %r
specyfikator formatu, który formatuje czas jako 12-godzinny (gg:mm:ss, a następnie AM lub PM).
Przykład 2 – Bardziej szczegółowe formatowanie
Jeśli użycie bardziej ogólnego specyfikatora formatu, jak w poprzednim przykładzie, nie jest odpowiednie, istnieją różne inne specyfikatory formatu, które mogą pomóc w stworzeniu wymaganego formatu.
Na przykład, jeśli podoba Ci się poprzedni format, ale nie chcesz, aby sekundy były zwracane, możesz to zrobić:
SELECT TIME_FORMAT('14:35:27', '%h:%i %p') AS 'Result';
Wynik:
+----------+ | Result | +----------+ | 02:35 PM | +----------+
Przykład 3 – 24 godziny
Istnieją również specyfikatory formatu dla czasu 24 godzinnego. Oto najprostszy sposób na sformatowanie czasu przy użyciu czasu 24-godzinnego.
SELECT TIME_FORMAT('14:35:27', '%T') AS 'Result';
Wynik:
+----------+ | Result | +----------+ | 14:35:27 | +----------+
Przykład 4 – Mikrosekundy
Oto przykład, który zawiera część ułamkową sekund w wyniku:
SELECT TIME_FORMAT('14:35:27', '%H:%i:%s.%f') AS 'Result';
Wynik:
+-----------------+ | Result | +-----------------+ | 14:35:27.000000 | +-----------------+
Oczywiście możemy również uwzględnić mikrosekundy w początkowej wartości czasu:
SELECT TIME_FORMAT('14:35:27.123456', '%H:%i:%s.%f') AS 'Result';
Wynik:
+-----------------+ | Result | +-----------------+ | 14:35:27.123456 | +-----------------+
Przykład 5 – Upływ czasu
Typ danych czasowych nie jest ograniczony do czasu 24 godzin. Może być również używany do reprezentowania czasu, który upłynął. Używając tej funkcji do pomiaru czasu, który upłynął, powinieneś być świadomy tego, jak specyfikatory formatu godziny działają z wartościami czasu spoza zakresu od 0 do 23.
Dokumentacja MySQL stwierdza, co następuje:
Jeśli wartość czasu zawiera część godziny, która jest większa niż 23
, %H
i %k
Specyfikatory formatu godzinowego generują wartość większą niż zwykły zakres 0..23
. Inne specyfikatory formatu godziny generują wartość godziny modulo 12
.
Oto przykład do zademonstrowania:
SELECT TIME_FORMAT('24:00:00', '%H %k %h %I %l') AS '24', TIME_FORMAT('48:00:00', '%H %k %h %I %l') AS '48', TIME_FORMAT('100:00:00', '%H %k %h %I %l') AS '100', TIME_FORMAT('500:00:00', '%H %k %h %I %l') AS '500';
Wynik:
+----------------+----------------+-----------------+-----------------+ | 24 | 48 | 100 | 500 | +----------------+----------------+-----------------+-----------------+ | 24 24 12 12 12 | 48 48 12 12 12 | 100 100 04 04 4 | 500 500 08 08 8 | +----------------+----------------+-----------------+-----------------+
Specyfikatory formatu
Poniższe specyfikatory mogą służyć do określenia formatu zwracanego. Są to podzbiór tych dostępnych za pomocą DATE_FORMAT()
funkcjonować. Wartość formatu musi zaczynać się od znaku procentu (%
).
Specyfikator | Opis |
---|---|
%f | Mikrosekundy (000000 ..999999 ) |
%H | Godzina (00 ..23 ) |
%h | Godzina (01 ..12 ) |
%I | Godzina (01 ..12 ) |
%i | Minuty, numeryczne (00 ..59 ) |
%k | Godzina (0 ..23 ) |
%l | Godzina (1 ..12 ) |
%p | AM lub PM |
%r | Czas, 12 godzin (hh:mm:ss po którym następuje AM lub PM ) |
%S | Sekundy (00 ..59 ) |
%s | Sekundy (00 ..59 ) |
%T | Czas, 24 godziny (hh:mm:ss ) |
%% | Dosłowny % znak |