Resumo : neste tutorial você aprenderá como usar a DATEDIFF()
função MySQL para calcular o número de dias entre dois DATE
valores.
Introdução à função MySQL DATEDIFF()
A DATEDIFF()
função calcula a diferença em dias entre duas datas.
Aqui está a sintaxe básica da DATEDIFF()
função:
DATEDIFF(end_date,start_date);
Nesta sintaxe:
end_date
: A data para a qual você deseja calcular a diferença.start_date
: A data a partir da qual você deseja calcular a diferença.
A DATEDIFF()
função retorna um número inteiro que representa o número de dias entre duas datas.
Se end_date
ou start_date
for NULL
, a DATEDIFF()
função retornará NULL
.
Observe que a DATEDIFF()
função considera apenas os componentes de data para cálculo e desconsidera os componentes de tempo.
Exemplos de MySQL DATEDIFF
Vejamos alguns exemplos de uso da DATEDIFF()
função
1) Exemplo simples de função DATEDIFF()
O exemplo a seguir usa a DATEDIFF()
função para calcular a diferença entre dois DATE
valores literais:
SELECT
DATEDIFF('2011-08-17', '2011-08-17') days;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+------+
| days |
+------+
| 0 |
+------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
O exemplo a seguir usa a DATEDIFF()
função para calcular o número de dias entre 2011-08-17
e 2011-08-08
:
SELECT
DATEDIFF('2011-08-17', '2011-08-08') days;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+------+
| days |
+------+
| 9 |
+------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
2) Usando a função DATEDIFF() com dados da tabela
Usaremos a orders
tabela no banco de dados de exemplo :
O exemplo a seguir usa a DATEDIFF()
função para calcular o número de dias entre a data necessária e a data de envio de cada pedido::
SELECT
orderNumber,
DATEDIFF(requiredDate, shippedDate) daysLeft
FROM
orders
ORDER BY
daysLeft DESC;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
+-------------+----------+
| orderNumber | daysLeft |
+-------------+----------+
| 10409 | 11 |
| 10410 | 10 |
| 10105 | 9 |
| 10135 | 9 |
| 10190 | 9 |
| 10201 | 9 |
...
A instrução a seguir obtém todos os pedidos cujos status estão em processamento e calcula o número de dias entre a data do pedido e a data solicitada:
SELECT
orderNumber,
DATEDIFF(requiredDate, orderDate) remainingDays
FROM
orders
WHERE
status = 'In Process'
ORDER BY
remainingDays;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-------------+---------------+
| orderNumber | remainingDays |
+-------------+---------------+
| 10423 | 6 |
| 10425 | 7 |
| 10421 | 8 |
| 10424 | 8 |
| 10420 | 9 |
| 10422 | 12 |
+-------------+---------------+
6 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
3) Lidando com valores NULL
O exemplo a seguir usa a DATEDIFF()
função para calcular os dias necessários desde a data do pedido até a data de envio:
SELECT
orderNumber,
DATEDIFF(shippedDate, orderDate) orderToShip
FROM
orders
ORDER BY
orderDate DESC;
Saída:
+-------------+-------------+
| orderNumber | orderToShip |
+-------------+-------------+
| 10424 | NULL |
| 10425 | NULL |
| 10422 | NULL |
| 10423 | NULL |
| 10420 | NULL |
| 10421 | NULL |
| 10419 | 2 |
| 10418 | 4 |
| 10417 | 6 |
...
Linguagem de código: PHP ( php )
O exemplo a seguir usa a IFNULL()
função para exibir N/A
quando a data de envio é NULL
SELECT
orderNumber,
IFNULL(DATEDIFF(shippedDate, orderDate), 'N/A') orderToShip
FROM
orders
ORDER BY
orderDate DESC;
Linguagem de código: JavaScript ( javascript )
Saída:
+-------------+-------------+
| orderNumber | orderToShip |
+-------------+-------------+
| 10424 | N/A |
| 10425 | N/A |
| 10422 | N/A |
| 10423 | N/A |
| 10420 | N/A |
| 10421 | N/A |
| 10419 | 2 |
| 10418 | 4 |
| 10417 | 6 |
...
Resumo
- Use
DATEDIFF()
a função MySQL para calcular o número de dias entre dois valores de data.