Aqui está uma lista de unidades que podem ser usadas nas funções de data e hora do MySQL.
unit Valor | Esperado expr Formato |
---|---|
MICROSECOND | MICROSECONDS |
SECOND | SECONDS |
MINUTE | MINUTES |
HOUR | HOUR |
DAY | DAYS |
WEEK | WEEKS |
MONTH | MONTHS |
QUARTER | QUARTERS |
YEAR | YEARS |
SECOND_MICROSECOND | 'SECONDS.MICROSECONDS' |
MINUTE_MICROSECOND | 'MINUTES:SECONDS.MICROSECONDS' |
MINUTE_SECOND | 'MINUTES:SECONDS' |
HOUR_MICROSECOND | 'HOURS:MINUTES:SECONDS.MICROSECONDS' |
HOUR_SECOND | 'HOURS:MINUTES:SECONDS' |
HOUR_MINUTE | 'HOURS:MINUTES' |
DAY_MICROSECOND | 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' |
DAY_SECOND | 'DAYS HOURS:MINUTES:SECONDS' |
DAY_MINUTE | 'DAYS HOURS:MINUTES' |
DAY_HOUR | 'DAYS HOURS' |
YEAR_MONTH | 'YEARS-MONTHS' |
Essas unidades podem ser usadas com o
+
e -
operadores ao realizar aritmética em datas, com funções como ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
e EXTRACT()
. Eles também podem ser usados no
ON SCHEDULE
cláusula do CREATE_EVENT()
e ALTER_EVENT()
funções. As primeiras nove unidades podem ser usadas com
TIMESTAMPADD()
e TIMESTAMPDIFF()
(essas duas funções não suportam as unidades compostas no momento da escrita). As unidades que contêm um sublinhado são unidades compostas. Estes consistem em mais de uma unidade de tempo base. Isso pode ser pensado como uma forma abreviada de especificar várias unidades de uma só vez. Cada unidade pode ser separada por qualquer caractere de pontuação.
Exemplos
Aqui está um exemplo de como adicionar um ano a uma expressão de data e hora:
SELECT '2035-01-01 01:30:45' + INTERVAL 1 YEAR;
Resultado:
2036-01-01 01:30:45
Neste caso, usamos o
+
operador para realizar a adição. Funções de data e hora
As unidades de data e hora podem ser usadas com várias funções de data.
Aqui está com o
DATE_ADD()
função:SELECT DATE_ADD('2035-01-01 01:30:45', INTERVAL 1 YEAR);
Resultado:
2036-01-01 01:30:45
Unidades Compostas
Aqui está um exemplo que usa unidades compostas:
SELECT
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:30:25' DAY_MINUTE) AS "DAY_MINUTE";
Resultado:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+
Os números inteiros podem ser separados por qualquer caractere de pontuação. Portanto, poderíamos substituir os dois pontos por pontos para obter o mesmo resultado:
SELECT
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.25.35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.30.25' DAY_MINUTE) AS "DAY_MINUTE";
Resultado:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+