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

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

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

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

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

Синтаксис

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

Синтаксис 1:

SUBDATE(expr,days) 

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

Синтаксис 2:

SUBDATE(date,INTERVAL expr unit) 

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

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

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

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

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

Резултат:

+-------------------------+| SUBDATE('2021-05-01', 1) |+--------------------------+| 30.04.2021 г. |+------------------------------+

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

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

Резултат:

+---------------------------------+| SUBDATE('2021-05-01 10:00:00', 1) |+------------------------------ ----+| 2021-04-30 10:00:00 |+----------------------------------+ 

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

SELECT 
    DATE_SUB('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 |+---------------------+---------------------+| 30.04.2021 10:00:00 | 2021-04-30 10:00:00 |+---------------------+---------------- -----+

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

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

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

Резултат:

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

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

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

SELECT 
    DATE_SUB('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 09:00:00 | 31.05.2021 09:00:00 |+---------------------+---------------- -----+

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

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

Пример:

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

Резултат:

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

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

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

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

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

 ГОДИНА:2020-05-01 10:00:00 МЕСЕЦ:2021-04-01 10:00:00 ДЕН:2021-04-30 10:00:00 ЧАС:2021-05-01 09:00:00 МИНУТА:2021-05-01 09:59:00 ВТОРА:2021-05-01 09:59:59 МИКРОСЕКУНДА:2021-05-01 09:59:59,999999

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

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

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

Резултат:

+---------------------+---------------------+-- -------------------+| YEAR_MONTH | HOUR_SECOND | DAY_MINUTE |+---------------------+---------------------+--- ------------------+| 01.03.2020 10:00:00 | 01.05.2021 08:34:25 | 2021-05-01 08:30:00 |+---------------------+---------------- -----+---------------------+

Нулеви дати

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

SELECT SUBDATE(null, INTERVAL 1 YEAR); 

Резултат:

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

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

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

SELECT SUBDATE(); 

Резултат:

ГРЕШКА 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. Как TO_BASE64() работи в MariaDB

  2. MySQL репликация с ProxySQL на WHM/cPanel сървъри:Част първа

  3. Как да получите краткото име на месеца от дата в MariaDB

  4. Как работи SUBDATE() в MariaDB

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