Respostas:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
DATETIME
, isso selecionará todos os registros da data anterior, desconsiderando a parte da hora. Executada em 23:59:59
, a consulta retornará todos os registros nas últimas 48
horas, não 24
.
Em MySQL
:
SELECT *
FROM mytable
WHERE record_date >= NOW() - INTERVAL 1 DAY
Em SQL Server
:
SELECT *
FROM mytable
WHERE record_date >= DATEADD(day, -1, GETDATE())
Em Oracle
:
SELECT *
FROM mytable
WHERE record_date >= SYSDATE - 1
Em PostgreSQL
:
SELECT *
FROM mytable
WHERE record_date >= NOW() - '1 day'::INTERVAL
Em Redshift
:
SELECT *
FROM mytable
WHERE record_date >= GETDATE() - '1 day'::INTERVAL
Em SQLite
:
SELECT *
FROM mytable
WHERE record_date >= datetime('now','-1 day')
Em MS Access
:
SELECT *
FROM mytable
WHERE record_date >= (Now - 1)
function getdate() does not exist
. Substituiu current_date
e funcionou bem.
CURDATE()
que não retorna uma data com uma parte de tempo, então ela vai para 00
. Corrigi-o usando em NOW()
vez de CURDATE()
.
MySQL:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
O INTERVALO pode ser em ANO, MÊS, DIA, HORA, MINUTO, SEGUNDO
Por exemplo, nos últimos 10 minutos
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 10 MINUTE)
Qual SQL não foi especificado, SQL 2005/2008
SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())
Se você estiver nos tipos de datas de precisão aumentada de 2008, use a nova função sysdatetime (), igualmente, se usar o horário UTC, troque internamente as chamadas UTC.
Se o registro de data e hora considerado for um registro de data e hora do UNIX, você precisa primeiro converter o registro de data e hora do UNIX (por exemplo, 1462567865) para registro de data e hora do mysql
SELECT * FROM `orders` WHERE FROM_UNIXTIME(order_ts) > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
SELECT DATEDIFF(s, '1970-01-01 00:00:00', DateField)
se você precisar de precisão de milissegundos no SQL Server 2016 e posterior: SELECT DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', DateField)
select ...
from ...
where YourDateColumn >= getdate()-1
Olá, agora que passou muito tempo desde o post original, mas tenho um problema semelhante e quero compartilhar.
Eu tenho um campo de data e hora com este formato AAAA-MM-DD hh: mm: ss e quero acessar um dia inteiro, então aqui está a minha solução.
A função DATE (), no MySQL: Extrai a parte da data de uma expressão de data ou data e hora.
SELECT * FROM `your_table` WHERE DATE(`your_datatime_field`)='2017-10-09'
com isso eu recebo todas as linhas registradas neste dia.
Espero que ajude alguém.
No SQL Server (nas últimas 24 horas):
SELECT *
FROM mytable
WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()