MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak TIMEDIFF() działa w MariaDB

W MariaDB, TIMEDIFF() to wbudowana funkcja daty i czasu, która zwraca różnicę między dwiema wartościami czasu lub wartości daty i godziny, wyrażoną jako wartość czasu.

Jest podobny do DATEDIFF() funkcji, z wyjątkiem tego, że DATEDIFF() Zwracana wartość jest wyrażona w dniach.

TIMEDIFF() akceptuje dwa argumenty, z których oba są wyrażeniami czasu lub daty i godziny. Następnie odejmuje drugi czas od pierwszego.

Składnia

Składnia wygląda tak:

TIMEDIFF(expr1,expr2)

Następnie zwraca expr1 - expr2 .

Przykład

Oto przykład:

SELECT TIMEDIFF('10:30:17', '1:10:10');

Wynik:

+---------------------------------+
| TIMEDIFF('10:30:17', '1:10:10') |
+---------------------------------+
| 09:20:07                        |
+---------------------------------+

Oto znowu, ale z zamienionymi wartościami czasu:

SELECT TIMEDIFF('1:10:10', '10:30:17');

Wynik:

+---------------------------------+
| TIMEDIFF('1:10:10', '10:30:17') |
+---------------------------------+
| -09:20:07                       |
+---------------------------------+

Wartości daty i godziny

Oto przykład wykorzystujący wartości daty i godziny:

SELECT TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59');

Wynik:

+--------------------------------------------------------+
| TIMEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59') |
+--------------------------------------------------------+
| 96:00:01                                               |
+--------------------------------------------------------+

Różne typy wartości

Podczas gdy TIMEDIFF() działa zarówno na wartościach czasu, jak i daty i godziny, oba argumenty muszą być tego samego typu. Mieszanie typów daje w wyniku null .

Przykład:

SELECT TIMEDIFF('2030-01-25 00:00:00', '23:59:59');

Wynik:

+---------------------------------------------+
| TIMEDIFF('2030-01-25 00:00:00', '23:59:59') |
+---------------------------------------------+
| NULL                                        |
+---------------------------------------------+

Poza zasięgiem

Zakres wartości czasu to '-838:59:59.999999' do '838:59:59.999999' . Jeśli wynik znajduje się poza tym zakresem, zwracana wartość jest górną granicą odpowiedniego zakresu i zwracane jest ostrzeżenie.

Przykład:

SELECT TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59');

Wynik:

+--------------------------------------------------------+
| TIMEDIFF('2040-01-25 00:00:00', '2030-01-25 23:59:59') |
+--------------------------------------------------------+
| 838:59:59                                              |
+--------------------------------------------------------+
1 row in set, 1 warning (0.003 sec)

Rzućmy okiem na ostrzeżenie:

SHOW WARNINGS;

Wynik:

+---------+------+-----------------------------------------------+
| Level   | Code | Message                                       |
+---------+------+-----------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '87624:00:01' |
+---------+------+-----------------------------------------------+

Aktualna data

Tutaj przekazujemy NOW() jako drugi argument:

SELECT 
    NOW(),
    TIMEDIFF('2021-05-27 10:00:00', NOW());

Wynik:

+---------------------+----------------------------------------+
| NOW()               | TIMEDIFF('2021-05-27 10:00:00', NOW()) |
+---------------------+----------------------------------------+
| 2021-05-27 14:29:38 | -04:29:38                              |
+---------------------+----------------------------------------+

Nieprawidłowe argumenty

Po przekazaniu jakichkolwiek nieprawidłowych argumentów, TIMEEDIFF() zwraca null :

SELECT TIMEDIFF('Homer', 'Simpson');

Wynik:

+------------------------------+
| TIMEDIFF('Homer', 'Simpson') |
+------------------------------+
| NULL                         |
+------------------------------+

Brakujący argument

Wywołanie TIMEDIFF() zła liczba argumentów lub bez przekazywania żadnych argumentów skutkuje błędem:

SELECT TIMEDIFF();

Wynik:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'

Oraz:

SELECT TIMEDIFF('2030-05-21');

Wynik:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIMEDIFF'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest MariaDB TX? Jak zarządzać nowym widelcem MariaDB MySQL!

  2. Jak działa DEGREES() w MariaDB

  3. Pełna lista zestawień obsługiwanych przez MariaDB

  4. Automatyzacja baz danych za nową szwedzką tożsamością elektroniczną Freja eID

  5. Co nowego w MariaDB 10.6