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

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

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

Позволява ви да промените дата, като посочите датата, единицата за добавяне и сумата за добавяне. Можете да подадете отрицателна сума, ако трябва да извадите датата с определен интервал.

ADDDATE() също има синтаксис за пряк път, който ви позволява да добавите определен брой дни към датата.

Синтаксис

ADDDATE() функцията има два синтаксиса.

Синтаксис 1:

ADDDATE(expr,days) 

Където expr е датата и days е броят на дните за добавяне.

Синтаксис 2:

ADDDATE(date,INTERVAL expr unit) 

Където date е датата за промяна, expr е сумата за добавяне и unit е единицата за добавяне (напр. секунда, минута и т.н.).

Когато използвате този синтаксис, ADDDATE() е синоним на DATE_ADD() .

Пример – Синтаксис 1

Ето пример за използване на първия синтаксис:

SELECT ADDDATE('2021-05-01', 1); 

Резултат:

+-------------------------+| ADDDATE('2021-05-01', 1) |+--------------------------+| 2021-05-02 |+------------------------------+

Можем също да включим частта от време, ако е необходимо:

SELECT ADDDATE('2021-05-01 10:00:00', 1); 

Резултат:

+---------------------------------+| ADDDATE('2021-05-01 10:00:00', 1) |+------------------------------ ----+| 2021-05-02 10:00:00 |+---------------------------------------+ 

Ето два алтернативни начина да направите едно и също нещо:

SELECT 
    DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1",
    '2021-05-01 10:00:00' + INTERVAL 1 DAY AS "Result 2"; 

Резултат:

+---------------------+---------------------+| Резултат 1 | Резултат 2 |+---------------------+---------------------+| 2021-05-02 10:00:00 | 2021-05-02 10:00:00 |+---------------------+---------------- -----+

Пример – Синтаксис 2

Ето пример за използване на втория синтаксис:

SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR); 

Резултат:

+------------------------------------------------------- ---+| ADDDATE('2021-05-31 10:00:00', ИНТЕРВАЛ 1 ЧАС) |+---------------------------- --------------------+| 2021-05-31 11:00:00 |+---------------------------------------------- -----------+

Този синтаксис ни позволява да добавяме други единици към датата (т.е. не само дните). Тук добавих час към датата, но също толкова лесно можех да добавя минути, секунди, месеци, дни, години и т.н. Продължете да четете за примери.

Ето два алтернативни метода за постигане на същия резултат като горния пример:

SELECT 
    DATE_ADD('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1",
    '2021-05-31 10:00:00' + INTERVAL 1 HOUR AS "Result 2"; 

Резултат:

+---------------------+---------------------+| Резултат 1 | Резултат 2 |+---------------------+---------------------+| 31.05.2021 11:00:00 | 31.05.2021 11:00:00 |+---------------------+---------------- -----+

Отрицателни интервали

Предоставянето на отрицателен интервал изважда тази сума от датата.

Пример:

SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR); 

Резултат:

+------------------------------------------------------- ----+| ADDDATE('2021-05-31 10:00:00', ИНТЕРВАЛ -1 ЧАС) |+---------------------------- ---------------------+| 2021-05-31 09:00:00 |+---------------------------------------------- ------------+

Други единици

Ето пример, който добавя интервал от 1 към различните единици за дата и час:

SELECT 
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND; 

Резултат (с помощта на вертикален изход):

 ГОДИНА:2022-05-01 10:00:00 МЕСЕЦ:2021-06-01 10:00:00 ДЕН:2021-05-02 10:00:00 ЧАС:2021-05-01 11:00:00 МИНУТА:2021-05-01 10:01:00 ВТОРА:2021-05-01 10:00:01 МИКРОСЕКУНДА:2021-05-01 10:00:00.000001

Съставни единици

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

SELECT 
    ADDDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
    ADDDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
    ADDDATE('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE"; 

Резултат:

+---------------------+---------------------+-- -------------------+| YEAR_MONTH | HOUR_SECOND | DAY_MINUTE |+---------------------+---------------------+--- ------------------+| 01.07.2022 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 |+---------------------+---------------- -----+---------------------+

Нулеви дати

Предаването на null за датата връща null :

SELECT ADDDATE(null, INTERVAL 1 YEAR); 

Резултат:

+--------------------------------+| ДОБАВЯНЕ(нула, ИНТЕРВАЛ 1 ГОДИНА) |+--------------------------------+| NULL |+--------------------------------+

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

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

SELECT ADDDATE(); 

Резултат:

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

  2. Използване на MySQL Galera Cluster Replication за създаване на гео-разпределен клъстер:Част втора

  3. PCI съответствие за MySQL и MariaDB с ClusterControl

  4. Изграждане на високодостъпна база данни за Moodle с помощта на MariaDB (репликация и MariaDB клъстер)

  5. MariaDB JSON_VALID() Обяснено