Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Unidades de data e hora no MySQL (lista completa)


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 |
+---------------------+---------------------+---------------------+