MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как TIMESTAMPDIFF() работи в MariaDB

В MariaDB, TIMESTAMPDIFF() е вградена функция за дата и час, която връща разликата между два израза за дата или дата и час.

Синтаксис

Синтаксисът е така:

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2) 

Където unit е една от следните стойности:

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

По избор единиците могат да имат префикс SQL_TSI_ .

TIMESTAMPDIFF() връща datetime_expr2 – datetime_expr1 .

Единият израз може да бъде дата, а другият дата и час. Стойностите за дата се третират като имащи времева част от 00:00:00 където е необходимо.

Пример

Ето пример за демонстрация:

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

Резултат:

+------------------------------------------------------- --+| TIMESTAMPDIFF(ДЕН, '2030-02-01', '2030-03-01') |+---------------------------- --------------------+| 28 |+-------------------------------------------------- -+

Отрицателен резултат

Превключването на датите дава отрицателен резултат:

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

Резултат:

+------------------------------------------------------- --+| TIMESTAMPDIFF(ДЕН, '2030-03-01', '2030-02-01') |+---------------------------- --------------------+| -28 |+------------------------------------------------------- --+

Стойности за дата и час

Ето пример за предаване на стойност за дата и час:

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

Резултат:

<пред>+--------+| Резултат |+--------+| 12 |+--------+

Посочих HOUR , и така игнорира частта от минутите и секундите.

Смесени типове

Ето пример за предаване както на дата, така и на стойност за дата и час:

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

Резултат:

<пред>+--------+| Резултат |+--------+| 12 |+--------+

Както бе споменато, стойностите на датата се третират като имащи времева част от 00:00:00 .

Добавяне на SQL_TSI_ Префикс

Устройството може да включва SQL_TSI_ префикс, ако е необходимо:

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

Резултат:

+--------+| Резултат |+--------+| 5 |+-------+

Микросекунди

Ето пример, който връща микросекунди:

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

Резултат:

<пред>+--------+| Резултат |+--------+| 123456 |+--------+

Ето един, при който микросекундите всъщност не са посочени в стойностите за дата и час:

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

Резултат:

+-----------+| Резултат |+-----------+| 7200000000 |+-----------+

Текуща дата

Можем да предадем NOW() един от аргументите datetime, за да сравните текущата дата и час с друга дата:

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

Резултат:

+---------------------+-----+| СЕГА() | Разлика |+---------------------+-----+| 30.05.2021 09:29:01 | -60 |+---------------------+-----+

Нулеви дати

Ако една от датите е null , резултатът е null :

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

Резултат:

+--------+| Резултат |+--------+| NULL |+--------+

Липсващ аргумент

Извикване на TIMESTAMPDIFF() с грешен брой аргументи или без подаване на аргументи, води до грешка:

SELECT TIMESTAMPDIFF(); 

Резултат:

ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до ')' на ред 1

И още един пример:

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

Резултат:

ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до '10, '2020-12-09')' на ред 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. MariaDB JSON_ARRAY() Обяснено

  2. Какво е новото в MariaDB Cluster 10.4

  3. Как работи FROM_BASE64() в MariaDB

  4. Увеличаване на ефективността на заявки към база данни за MySQL - част втора

  5. Как POSITION() работи в MariaDB