it-swarm-pt.tech

Selecione registros de NOW () -1 dia

Existe uma maneira em uma instrução MySQL para ordenar registros (através de um registro de data) por> = NOW () -1 para que todos os registros do dia antes de hoje para o futuro sejam selecionados?

100
user1092780

A julgar pela documentação para funções de data/hora , você deve ser capaz de fazer algo como:

SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY
196
Jon Skeet

Esteja ciente de que o resultado pode ser um pouco diferente do esperado. 

NOW() retorna um DATETIME

E INTERVAL funciona como nomeado, por exemplo INTERVAL 1 DAY = 24 hours

Portanto, se o seu script for executado em 03:00, ele perderá o first three hours of records from the 'oldest' day.

Para obter o dia inteiro, use CURDATE() - INTERVAL 1 DAY. Isso retornará ao início do dia anterior, independentemente de quando o script for executado.

44
William Dan Terry

Você está quase lá: é NOW() - INTERVAL 1 DAY

14
dasblinkenlight

Certamente você pode:

SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
7
Marco Miltenburg

Não viu nenhuma resposta corretamente usando DATE_ADD ou DATE_SUB:

Subtrair 1 dia da NOW()

...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY)

Adicione 1 dia a partir de NOW()

...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)
0
Andrew Atkinson

quando o campo de pesquisa é timestamp e você deseja encontrar registros de 0 horas ontem e 0 hora hoje, use construção

MY_DATE_TIME_FIELD between makedate(year(now()), date_format(now(),'%j')-1) and makedate(year(now()), date_format(now(),'%j'))  

em vez de 

 now() - interval 1 day
0
Michael de Oz