I MariaDB, DATE_ADD()
er en indbygget dato- og tidsfunktion, der udfører datoregning.
Det giver dig mulighed for at ændre en dato ved at angive datoen, den enhed, der skal tilføjes, og det beløb, der skal tilføjes. Du kan sende et negativt beløb, hvis du skal trække datoen fra med et bestemt interval.
Syntaks
Syntaksen ser sådan ud:
DATE_ADD(date,INTERVAL expr unit)
Hvor date
er datoen for ændring, expr
er det beløb, der skal tilføjes, og unit
er den dato/tidsenhed, der skal tilføjes (f.eks. sekund, minut osv.).
Eksempel
Her er et grundlæggende eksempel:
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 er ligesom at gøre følgende:
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 | +-----------------------------------------+
Negative intervaller
Angivelse af et negativt interval trækker dette beløb fra datoen.
Eksempel:
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 | +---------------------------------------------------+
Andre enheder
Her er et eksempel, der tilføjer et interval på 1 til de forskellige dato- og tidsenheder:
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 (ved hjælp af lodret output):
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
Sammensatte enheder
Her er et eksempel, der bruger sammensatte enheder:
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 | +---------------------+---------------------+---------------------+
Nulledatoer
Sender null
for datoen returnerer null
:
SELECT DATE_ADD(null, INTERVAL 1 YEAR);
Resultat:
+---------------------------------+ | DATE_ADD(null, INTERVAL 1 YEAR) | +---------------------------------+ | NULL | +---------------------------------+
Manglende argument
Kalder DATE_ADD()
med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
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