Respuestas:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
DATETIME, esto seleccionará todos los registros de la fecha anterior, sin tener en cuenta la parte de tiempo. Ejecutado en 23:59:59, la consulta devolverá todos los registros de las últimas 48horas, no 24.
En MySQL:
SELECT *
FROM mytable
WHERE record_date >= NOW() - INTERVAL 1 DAY
En SQL Server:
SELECT *
FROM mytable
WHERE record_date >= DATEADD(day, -1, GETDATE())
En Oracle:
SELECT *
FROM mytable
WHERE record_date >= SYSDATE - 1
En PostgreSQL:
SELECT *
FROM mytable
WHERE record_date >= NOW() - '1 day'::INTERVAL
En Redshift:
SELECT *
FROM mytable
WHERE record_date >= GETDATE() - '1 day'::INTERVAL
En SQLite:
SELECT *
FROM mytable
WHERE record_date >= datetime('now','-1 day')
En MS Access:
SELECT *
FROM mytable
WHERE record_date >= (Now - 1)
function getdate() does not exist. Lo reemplazó current_datey funcionó bien.
CURDATE()que no devuelve una fecha con una porción de tiempo, por lo que continúa 00. Lo arreglé usando en NOW()lugar de CURDATE().
MySQL:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
El INTERVALO puede ser en AÑO, MES, DÍA, HORA, MINUTO, SEGUNDO
Por ejemplo, en los últimos 10 minutos
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 10 MINUTE)
Qué SQL no se especificó, SQL 2005/2008
SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())
Si está utilizando los tipos de fecha de mayor precisión de 2008, use la nueva función sysdatetime () en su lugar, igualmente si usa las horas UTC, cambie internamente a las llamadas UTC.
Si la marca de tiempo considerada es una marca de tiempo UNIX, primero debe convertir la marca de tiempo UNIX (por ejemplo, 1462567865) a la marca de tiempo o datos de 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) si necesita una precisión de milisegundos en SQL Server 2016 y uso posterior: SELECT DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', DateField)
select ...
from ...
where YourDateColumn >= getdate()-1
Hola, ya pasé mucho tiempo desde la publicación original, pero tuve un problema similar y quiero compartirlo.
Tengo un campo de fecha y hora con este formato AAAA-MM-DD hh: mm: ss, y quiero acceder a todo un día, así que aquí está mi solución.
La función DATE (), en MySQL: Extrae la parte de fecha de una expresión de fecha o fecha y hora.
SELECT * FROM `your_table` WHERE DATE(`your_datatime_field`)='2017-10-09'
con esto consigo todo el registro de la fila en este día.
Espero que sea de ayuda para cualquiera.
En SQL Server (durante las últimas 24 horas):
SELECT *
FROM mytable
WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()