W MariaDB, TIME_FORMAT()
to wbudowana funkcja daty i czasu, która formatuje wartość czasu zgodnie z podanym ciągiem formatu.
Działa podobnie do DATE_FORMAT()
funkcji, z wyjątkiem tego, że ciąg formatu może zawierać tylko specyfikatory formatu dla godzin, minut i sekund.
Wymaga dwóch argumentów; czas i ciąg formatu.
Składnia
Składnia wygląda tak:
TIME_FORMAT(time,format)
Gdzie time
to wartość czasu i format
jest ciągiem formatu. Zobacz ciągi formatujące MariaDB, aby uzyskać listę dopuszczalnych specyfikatorów formatu. Jak wspomniano, akceptowane są tylko specyfikatory formatu godzin, minut i sekund. Wszystkie inne wartości zwracają null
.
Przykład
Oto przykład:
SELECT TIME_FORMAT('10:30:45', '%H %i %S');
Wynik:
+-------------------------------------+ | TIME_FORMAT('10:30:45', '%H %i %S') | +-------------------------------------+ | 10 30 45 | +-------------------------------------+
I znowu, ale tym razem dostarczamy bardziej rozbudowany ciąg formatujący:
SELECT TIME_FORMAT(
'10:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Wynik:
+--------------------------------------+ | Result | +--------------------------------------+ | 10 hours, 30 minutes, and 45 seconds | +--------------------------------------+
Większe godziny
TIME
wartości mogą należeć do zakresu '-838:59:59.999999'
do '838:59:59.999999'
.
Dlatego część godzinowa może być znacznie wyższa niż 23
:
SELECT TIME_FORMAT(
'810:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Wynik:
+---------------------------------------+ | Result | +---------------------------------------+ | 810 hours, 30 minutes, and 45 seconds | +---------------------------------------+
Ujemne wartości czasu
Oto przykład z ujemną wartością czasu:
SELECT TIME_FORMAT(
'-810:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Wynik:
+----------------------------------------+ | Result | +----------------------------------------+ | -810 hours, 30 minutes, and 45 seconds | +----------------------------------------+
Czasy poza zakresem
Jednak podanie wartości czasu poza zakresem zwróci górną granicę tego zakresu wraz z ostrzeżeniem:
SELECT TIME_FORMAT(
'910:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Wynik:
+---------------------------------------+ | Result | +---------------------------------------+ | 838 hours, 59 minutes, and 59 seconds | +---------------------------------------+ 1 row in set, 1 warning (0.003 sec)
Sprawdźmy ostrzeżenie:
SHOW WARNINGS;
Wynik:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '910:30:45' | +---------+------+---------------------------------------------+
Nieprawidłowe argumenty
Po przekazaniu jakichkolwiek nieprawidłowych argumentów, TIME_FORMAT()
zwraca null
z ostrzeżeniem:
SELECT TIME_FORMAT('Homer', 'Simpson');
Wynik:
+---------------------------------+ | TIME_FORMAT('Homer', 'Simpson') | +---------------------------------+ | NULL | +---------------------------------+ 1 row in set, 1 warning (0.009 sec)
Sprawdź ostrzeżenie:
SHOW WARNINGS;
Wynik:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Nieprawidłowy ciąg formatujący
Ciąg formatu może zawierać tylko specyfikatory formatu dla godzin, minut i sekund. Wszelkie inne specyfikatory formatu dają w wyniku null
zwracany:
SELECT TIME_FORMAT('10:30:45', '%M %W');
Wynik:
+----------------------------------+ | TIME_FORMAT('10:30:45', '%M %W') | +----------------------------------+ | NULL | +----------------------------------+
Brakujący argument
Wywołanie TIME_FORMAT()
z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT TIME_FORMAT();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIME_FORMAT'
I kolejny przykład:
SELECT TIME_FORMAT('10:09:10');
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIME_FORMAT'