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

Como encontrar o número de dias entre duas datas no MySQL

Problema:


Você gostaria de obter a diferença, em dias, entre duas datas em um banco de dados MySQL.

Exemplo:


Nosso banco de dados tem uma tabela chamada food com dados nas colunas id , name , purchase_date e expiration_date .
id nome data_compra data_de expiração
1 pão 20-07-2019 22-08-2019
2 manteiga 2018-07-30 2019-08-10
3 leite 2019-01-12 2019-01-13
4 iogurte 25-02-2019 24-02-2019

Para cada produto alimentício, vamos obter o nome do produto e o número de dias entre a data de vencimento e a data de compra.

Solução:


Usaremos o DATEDIFF() função. Aqui está a consulta que você escreveria:
SELECT
  name,
  DATEDIFF(expiration_date, purchase_date) AS days
FROM food;

Segue o resultado da consulta:
nome dias
pão 33
manteiga 376
leite 1
iogurte -1

Discussão:


Use o DATEDIFF() função para recuperar o número de dias entre duas datas em um banco de dados MySQL. Esta função recebe dois argumentos:
  1. A data de término. (No nosso exemplo, é a expiration_date coluna.)
  2. A data de início. (No nosso exemplo, é o purchase_date coluna.)

Esses argumentos podem ser valores de data/datahora, expressões que retornam valores de data/datahora ou colunas do tipo de dados datahora ou data.

Esta função subtrai a data de início da data de término e retorna o número de dias como um número inteiro. Em nosso exemplo, manteiga foi comprado em '2018-07-30', mas sua data de validade era '2019-08-10'; após a compra, pode ser consumido durante 376 dias. Observe que o iogurte foi adquirido como um produto desatualizado:a diferença em dias é de -1 e sua data de compra é posterior à data de validade.