I MariaDB, TIMESTAMPADD() är en inbyggd datum- och tidsfunktion som lägger till ett heltalsuttrycksintervall till ett givet datum- eller datumtidsuttryck.
Syntax
Syntaxen ser ut så här:
TIMESTAMPADD(unit,interval,datetime_expr)
Där unit är ett av följande värden:
MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEAR
Enheterna kan valfritt ha prefixet SQL_TSI_ .
Exempel
Här är ett exempel att visa:
SELECT TIMESTAMPADD(DAY, 10, '2030-02-01'); Resultat:
+-------------------------------------+ | TIMESTAMPADD(DAY, 10, '2030-02-01') | +-------------------------------------+ | 2030-02-11 | +-------------------------------------+
Datetime-värden
Här är ett exempel på hur du skickar ett datetime-värde:
SELECT TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45'); Resultat:
+-----------------------------------------------+ | TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45') | +-----------------------------------------------+ | 2030-02-01 20:30:45 | +-----------------------------------------------+
Lägga till en SQL_TSI_ Prefix
Enheten kan innehålla en SQL_TSI_ prefix vid behov:
SELECT TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01'); Resultat:
+----------------------------------------------+ | TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01') | +----------------------------------------------+ | 2040-02-01 | +----------------------------------------------+
Mikrosekunder
Här är ett exempel som lägger till mikrosekunder:
SELECT TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45'); Resultat:
+----------------------------------------------------------+ | TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45') | +----------------------------------------------------------+ | 2030-02-01 10:30:45.123456 | +----------------------------------------------------------+
Negativa intervall
Negativa intervall är giltiga:
Exempel:
SELECT TIMESTAMPADD(YEAR, -10, '2030-02-01'); Resultat:
+---------------------------------------+ | TIMESTAMPADD(YEAR, -10, '2030-02-01') | +---------------------------------------+ | 2020-02-01 | +---------------------------------------+
Aktuellt datum
Vi kan skicka NOW() som datetime-argument för att använda aktuellt datum och tid:
SELECT
NOW(),
TIMESTAMPADD(DAY, 10, NOW()); Resultat:
+---------------------+------------------------------+ | NOW() | TIMESTAMPADD(DAY, 10, NOW()) | +---------------------+------------------------------+ | 2021-05-28 09:58:56 | 2021-06-07 09:58:56 | +---------------------+------------------------------+
Argument saknas
Anropar TIMESTAMPADD() med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:
SELECT TIMESTAMPADD(); 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
Och ett annat exempel:
SELECT TIMESTAMPADD(10, '2020-12-09'); 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 '10, '2020-12-09')' at line 1