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'