Je cherche une clause where
qui puisse être utilisée pour récupérer des enregistrements des dernières 24 heures?
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
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)
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)
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.
dans postgres, en supposant que votre type de champ est un horodatage:
sélectionnez * dans la table où date_field> (now () - intervalle '24 heures ');
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)
select ...
from ...
where YourDateColumn >= getdate()-1
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.
SELECT *
FROM tableName
WHERE datecolumn >= dateadd(hour,-24,getdate())
Dans SQL Server (pour les dernières 24 heures):
SELECT *
FROM mytable
WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()