I MariaDB, DATE_ADD()
är en inbyggd datum- och tidsfunktion som utför datumaritmetik.
Det låter dig ändra ett datum genom att ange datumet, enheten som ska läggas till och beloppet som ska läggas till. Du kan skicka ett negativt belopp om du behöver dra av datumet med ett visst intervall.
Syntax
Syntaxen ser ut så här:
DATE_ADD(date,INTERVAL expr unit)
Där date
är datumet att ändra, expr
är beloppet som ska läggas till och unit
är den datum/tidsenhet som ska läggas till (t.ex. sekund, minut, etc).
Exempel
Här är ett grundläggande exempel:
SELECT DATE_ADD('2021-05-31 10:00:00', INTERVAL 1 HOUR);
Resultat:
+--------------------------------------------------+ | DATE_ADD('2021-05-31 10:00:00', INTERVAL 1 HOUR) | +--------------------------------------------------+ | 2021-05-31 11:00:00 | +--------------------------------------------------+
Det är som att göra följande:
SELECT '2021-05-31 10:00:00' + INTERVAL 1 HOUR;
Resultat:
+-----------------------------------------+ | '2021-05-31 10:00:00' + INTERVAL 1 HOUR | +-----------------------------------------+ | 2021-05-31 11:00:00 | +-----------------------------------------+
Negativa intervall
Genom att ange ett negativt intervall subtraherar det beloppet från datumet.
Exempel:
SELECT DATE_ADD('2021-05-31 10:00:00', INTERVAL -1 HOUR);
Resultat:
+---------------------------------------------------+ | DATE_ADD('2021-05-31 10:00:00', INTERVAL -1 HOUR) | +---------------------------------------------------+ | 2021-05-31 09:00:00 | +---------------------------------------------------+
Övriga enheter
Här är ett exempel som lägger till ett intervall på 1 till de olika datum- och tidsenheterna:
SELECT
DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR,
DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH,
DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY,
DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR,
DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND,
DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;
Resultat (med vertikal utdata):
YEAR: 2022-05-01 10:00:00 MONTH: 2021-06-01 10:00:00 DAY: 2021-05-02 10:00:00 HOUR: 2021-05-01 11:00:00 MINUTE: 2021-05-01 10:01:00 SECOND: 2021-05-01 10:00:01 MICROSECOND: 2021-05-01 10:00:00.000001
Kompositenheter
Här är ett exempel som använder sammansatta enheter:
SELECT
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Resultat:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 | +---------------------+---------------------+---------------------+
Nulldatum
Skickar null
för datumet returnerar null
:
SELECT DATE_ADD(null, INTERVAL 1 YEAR);
Resultat:
+---------------------------------+ | DATE_ADD(null, INTERVAL 1 YEAR) | +---------------------------------+ | NULL | +---------------------------------+
Argument saknas
Ringer DATE_ADD()
med fel antal argument, eller utan att skicka några argument resulterar i ett fel:
SELECT DATE_ADD();
Resultat:
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