Desejo retornar todos os registros que foram adicionados ao banco de dados nos últimos 30 dias. Preciso converter a data em mm / dd / aa devido a fins de exibição.
create_date between DATE_FORMAT(curdate(),'%m/%d/%Y') AND (DATE_FORMAT(curdate() - interval 30 day,'%m/%d/%Y'))
Minha declaração falha ao limitar os registros aos últimos 30 dias - ele seleciona todos os registros.
Alguém pode me apontar na direção certa? Parece que estou perto.
Obrigado e tenham uma ótima semana.
fonte
DATE_FORMAT(create_date, '%m/%d/%Y')
... WHERE create_date BETWEEN (NOW() - INTERVAL 30 DAY) AND NOW()
DATE_FORMAT
retorna uma string, então você está usando duas strings em suaBETWEEN
cláusula, o que não funcionará conforme o esperado.Em vez disso, converter a data para o formato do
SELECT
e fazer oBETWEEN
para as datas reais. Por exemplo,fonte
Você também pode escrever isso no mysql -
FIXO
fonte
Para a atividade de data atual e a atividade completa dos 30 dias anteriores, use-a, pois o SYSDATE é variável em um dia no 30º dia anterior não terá os dados completos para esse dia.
fonte
Aqui está uma solução sem usar a
curdate()
função, esta é uma solução para quem usaTSQL
eu achofonte