W MariaDB, MAKETIME()
to wbudowana funkcja daty i czasu, która zwraca wartość czasu na podstawie godzin, minut i sekund podanych jako argumenty.
Składnia
Składnia wygląda tak:
MAKETIME(hour,minute,second)
Przykład
Oto przykład:
SELECT MAKETIME(08, 30, 45);
Wynik:
+----------------------+ | MAKETIME(08, 30, 45) | +----------------------+ | 08:30:45 | +----------------------+
I jeszcze jeden:
SELECT MAKETIME(23, 8, 1);
Wynik:
+--------------------+ | MAKETIME(23, 8, 1) | +--------------------+ | 23:08:01 | +--------------------+
Zakresy
Jeśli hour
argument jest poza zakresem -838
do 838
, wartość jest obcinana z ostrzeżeniem.
Jeśli minute
lub second
argumenty są poza zakresem 0
do 59
, wynik to null
i wyświetlane jest ostrzeżenie (dokumentacja MariaDB stwierdza, że zakres to 0
do 60
, ale w moich testach tak nie jest. Ponadto dokumentacja MariaDB stwierdza również, że zakres wartości czasu MariaDB to '-838:59:59.999999'
do '838:59:59.999999'
).
W każdym razie, oto przykład czasu z wartościami, które znajdują się na górnym końcu ich akceptowanego zakresu:
SELECT MAKETIME(838, 59, 59.999999);
Wynik:
+------------------------------+ | MAKETIME(838, 59, 59.999999) | +------------------------------+ | 838:59:59.999999 | +------------------------------+
Wartości te nadal mieściły się w dopuszczalnym zakresie, więc otrzymaliśmy prawidłową wartość czasu.
Nieprawidłowe minuty i sekundy
Oto, co się dzieje, gdy przekraczamy akceptowany zakres przez minute
i second
argumenty:
SELECT
MAKETIME(00, 60, 00),
MAKETIME(00, 00, 60);
Wynik:
+----------------------+----------------------+ | MAKETIME(00, 60, 00) | MAKETIME(00, 00, 60) | +----------------------+----------------------+ | NULL | NULL | +----------------------+----------------------+ 1 row in set, 1 warning (0.001 sec)
Wynik to null
dla obu, z ostrzeżeniem.
Sprawdźmy ostrzeżenie:
SHOW WARNINGS;
Wynik:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect seconds value: '60' | +---------+------+-----------------------------------------+
Nieprawidłowe godziny
Zobaczmy teraz, co się stanie, gdy wyjdziemy poza zaakceptowany zakres przez hour
argument:
SELECT MAKETIME(900, 00, 00);
Wynik:
+-----------------------+ | MAKETIME(900, 00, 00) | +-----------------------+ | 838:59:59 | +-----------------------+ 1 row in set, 1 warning (0.000 sec)
W tym scenariuszu zwracana jest wartość czasu z godzinami, minutami i sekundami przyciętymi do ich górnego zakresu. Zwracane jest również ostrzeżenie.
Sprawdźmy ostrzeżenie:
SHOW WARNINGS;
Wynik:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '900:00:00' | +---------+------+---------------------------------------------+
Brakujący argument
Wywołanie MAKETIME()
z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT MAKETIME();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
I kolejny przykład:
SELECT MAKETIME( 12, 1 );
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Umów się na randkę
Zobacz także SEC_TO_TIME()
do konstruowania wartości daty z liczby sekund.
Zobacz także MAKEDATE()
do konstruowania wartości daty na podstawie roku i dnia roku.