web-dev-qa-db-fra.com

Comment sélectionner des enregistrements des dernières 24 heures en utilisant SQL?

Je cherche une clause where qui puisse être utilisée pour récupérer des enregistrements des dernières 24 heures?

169
Mike
SELECT * 
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
95
Guillaume Flandre

Dans MySQL:

SELECT  *
FROM    mytable
WHERE   record_date >= NOW() - INTERVAL 1 DAY

Dans SQL Server:

SELECT  *
FROM    mytable
WHERE   record_date >= DATEADD(day, -1, GETDATE())

Dans Oracle:

SELECT  *
FROM    mytable
WHERE   record_date >= SYSDATE - 1

Dans PostgreSQL:

SELECT  *
FROM    mytable
WHERE   record_date >= NOW() - '1 day'::INTERVAL

Dans Redshift:

SELECT  *
FROM    mytable
WHERE   record_date >= GETDATE() - '1 day'::INTERVAL

Dans SQLite:

SELECT  *
FROM    mytable
WHERE   record_date >= datetime('now','-1 day')

Dans MS Access:

SELECT  *
FROM    mytable
WHERE   record_date >= (Now - 1)
517
Quassnoi

MySQL:

SELECT * 
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)

L’INTERVALLE peut être en ANNÉE, MOIS, JOUR, HEURE, MINUTE, SECONDE

Par exemple, dans les 10 dernières minutes

SELECT * 
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 10 MINUTE)
20
Karthik Jayapal

Quel SQL n'a pas été spécifié, SQL 2005/2008

SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())

Si vous êtes sur les types de date d'exactitude accrue de 2008, utilisez plutôt la nouvelle fonction sysdatetime (), de la même manière si vous utilisez des heures UTC en interne, permutez-les en appels UTC.

8
Andrew

dans postgres, en supposant que votre type de champ est un horodatage:

sélectionnez * dans la table où date_field> (now () - intervalle '24 heures ');

7
pisaruk

Si l'horodatage considéré est un horodatage UNIX, vous devez d'abord convertir l'horodatage UNIX (par exemple, 1462567865) en un horodatage ou des données mysql.

SELECT * FROM `orders` WHERE FROM_UNIXTIME(order_ts) > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
4
lightup
select ...
from ...
where YourDateColumn >= getdate()-1
3
Mladen Prajdic

Bonjour, je passe maintenant beaucoup de temps depuis le message original, mais j’ai un problème similaire que je veux partager.

J'ai un champ date-heure avec ce format AAAA-MM-JJ hh: mm: ss, et je souhaite accéder à une journée entière. Voici donc ma solution.

La fonction DATE (), dans MySQL: Extrait la partie date d’une expression date ou datetime.

SELECT * FROM `your_table` WHERE DATE(`your_datatime_field`)='2017-10-09'

avec cela, je reçois tout le registre de rangée en ce jour.

J'espère que cela aidera n'importe qui.

2
Rafa cosquiere
SELECT * 
FROM tableName 
WHERE datecolumn >= dateadd(hour,-24,getdate())
1
Galwegian

Dans SQL Server (pour les dernières 24 heures):

SELECT  *
FROM    mytable
WHERE   order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()
1
arunkumar.halder