Comparação de datas do MySQL com DATE_FORMAT()
Neste artigo, exploraremos como realizar comparações de datas no MySQL usando o método DATE_FORMAT() função, abordando um problema específico enfrentado por um usuário ao comparar datas.
O problema
O usuário enfrentou um desafio ao comparar datas usando DATE_FORMAT(). As datas foram armazenadas no seguinte formato: '%d-%m-%Y', que não é um formato facilmente classificável. Usando a consulta abaixo, o usuário tentou comparar as datas:
SELECT DATE_FORMAT(DATE(starttime), '%d-%m-%Y')
FROM data
WHERE DATE_FORMAT(DATE(starttime), '%d-%m-%Y') >= '02-11-2012';
No entanto, o resultado incluiu '28-10-2012', que foi incorreto de acordo com as expectativas do usuário.
A solução
O problema surge porque estamos comparando strings em vez de datas. DATE_FORMAT() converte uma data em uma string e as strings são comparadas lexicograficamente. Neste caso, '28-10-2012' é maior que '02-11-2012' lexicograficamente, embora '02-11-2012' seja uma data posterior.
Para comparar datas com precisão, precisamos para compará-los como datas, não como strings. Podemos usar a função DATE() para extrair o componente de data do campo starttime e então comparar as datas usando o operador >=, conforme mostrado na consulta a seguir:
SELECT DATE_FORMAT(DATE(starttime), '%d-%m-%Y')
FROM data
WHERE DATE(starttime) >= DATE('2012-11-02');
Esta consulta comparará corretamente as datas e excluirá '28-10-2012' do resultado.
Considerações adicionais
Vale a pena considerar se o horário de início do campo DATETIME pode ser alterado para um campo DATE. Isso eliminaria a necessidade de conversões repetidas, melhorando potencialmente o desempenho.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3