Função MySQL DATEDIFF()

Resumo : neste tutorial você aprenderá como usar a DATEDIFF() função MySQL para calcular o número de dias entre dois DATEvalores.

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_dateou start_datefor 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 DATEvalores literais:

SELECT 
  DATEDIFF('2011-08-17', '2011-08-17') days;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

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-17e 2011-08-08:

SELECT 
  DATEDIFF('2011-08-17', '2011-08-08') days;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

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 orderstabela 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 )

Experimente

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

Experimente

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/Aquando 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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *