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

Jak TIMESTAMPDIFF() działa w MariaDB

W MariaDB, TIMESTAMPDIFF() to wbudowana funkcja daty i czasu, która zwraca różnicę między dwoma wyrażeniami daty lub czasu.

Składnia

Składnia wygląda tak:

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

Gdzie unit jest jedną z następujących wartości:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR

Jednostki mogą opcjonalnie mieć przedrostek SQL_TSI_ .

TIMESTAMPDIFF() zwraca datetime_expr2 – datetime_expr1 .

Jedno wyrażenie może być datą, a drugie datą i godziną. Wartości dat są traktowane jako mające część czasu 00:00:00 w razie potrzeby.

Przykład

Oto przykład do zademonstrowania:

SELECT TIMESTAMPDIFF(DAY, '2030-02-01', '2030-03-01');

Wynik:

+------------------------------------------------+
| TIMESTAMPDIFF(DAY, '2030-02-01', '2030-03-01') |
+------------------------------------------------+
|                                             28 |
+------------------------------------------------+

Wynik negatywny

Zamiana dat daje wynik negatywny:

SELECT TIMESTAMPDIFF(DAY, '2030-03-01', '2030-02-01');

Wynik:

+------------------------------------------------+
| TIMESTAMPDIFF(DAY, '2030-03-01', '2030-02-01') |
+------------------------------------------------+
|                                            -28 |
+------------------------------------------------+

Wartości daty i godziny

Oto przykład przekazywania wartości daty i godziny:

SELECT TIMESTAMPDIFF(
    HOUR, 
    '2030-02-01 00:00:00', 
    '2030-02-01 12:30:45'
    ) 
AS Result;

Wynik:

+--------+
| Result |
+--------+
|     12 |
+--------+

Określiłem HOUR , więc ignoruje część minut i sekund.

Typy mieszane

Oto przykład przekazywania zarówno daty, jak i wartości daty i godziny:

SELECT TIMESTAMPDIFF(
    HOUR, 
    '2030-02-01', 
    '2030-02-01 12:30:45'
    ) 
AS Result;

Wynik:

+--------+
| Result |
+--------+
|     12 |
+--------+

Jak wspomniano, wartości dat są traktowane jako mające część czasu 00:00:00 .

Dodawanie SQL_TSI_ Prefiks

Jednostka może zawierać SQL_TSI_ prefiks, jeśli jest wymagany:

SELECT TIMESTAMPDIFF(
    SQL_TSI_YEAR, 
    '2030-02-01', 
    '2035-02-01'
    )
AS Result;

Wynik:

+--------+
| Result |
+--------+
|      5 |
+--------+

Mikrosekundy

Oto przykład zwracający mikrosekundy:

SELECT TIMESTAMPDIFF(
    MICROSECOND, 
    '2030-02-01 10:30:45.000000',
    '2030-02-01 10:30:45.123456'
    )
AS Result;

Wynik:

+--------+
| Result |
+--------+
| 123456 |
+--------+

Oto jeden, w którym mikrosekundy nie są tak naprawdę określone w wartościach daty i godziny:

SELECT TIMESTAMPDIFF(
    MICROSECOND, 
    '2030-02-01 10:30:45',
    '2030-02-01 12:30:45'
    )
AS Result;

Wynik:

+------------+
| Result     |
+------------+
| 7200000000 |
+------------+

Aktualna data

Możemy przekazać NOW() jeden z argumentów datetime w celu porównania bieżącej daty i godziny z inną datą:

SELECT 
    NOW(),
    TIMESTAMPDIFF(DAY, NOW(), '2021-03-31') AS Diff;

Wynik:

+---------------------+------+
| NOW()               | Diff |
+---------------------+------+
| 2021-05-30 09:29:01 |  -60 |
+---------------------+------+

Daty zerowe

Jeśli jedna z dat to null , wynik to null :

SELECT TIMESTAMPDIFF(
    YEAR, 
    '2030-02-01',
    NULL
    )
AS Result;

Wynik:

+--------+
| Result |
+--------+
|   NULL |
+--------+

Brakujący argument

Wywołanie TIMESTAMPDIFF() z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:

SELECT TIMESTAMPDIFF();

Wynik:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

I kolejny przykład:

SELECT TIMESTAMPDIFF('2020-12-09');

Wynik:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '10, '2020-12-09')' at line 1

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przygotowanie serwera MySQL lub MariaDB do produkcji — część druga

  2. Jak TIMESTAMPDIFF() działa w MariaDB

  3. POKAŻ TABELE w MariaDB

  4. 2 sposoby na zwrócenie kodu ASCII dla danej postaci w MariaDB

  5. Jak w bezpieczny sposób przeprowadzać zmiany schematu w MySQL i MariaDB?