Réponses:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
DATETIME
, cela sélectionnera tous les enregistrements de la date précédente, sans tenir compte de la partie de temps. A été exécutée à 23:59:59
, la requête renverra tous les enregistrements des dernières 48
heures, non 24
.
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)
function getdate() does not exist
. Remplacé par current_date
et cela a bien fonctionné.
CURDATE()
ne pas renvoyer une date avec une portion d'heure, donc ça va à 00
. Je l'ai corrigé en utilisant NOW()
au lieu de CURDATE()
.
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 de précision augmentée 2008, utilisez plutôt la nouvelle fonction sysdatetime (), de la même manière si vous utilisez les heures UTC en interne pour les appels UTC.
Si l'horodatage considéré est un horodatage UNIX Vous devez d'abord convertir l'horodatage UNIX (par exemple, 1462567865) en horodatage ou données 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 vous avez besoin d'une précision à la milliseconde dans SQL Server 2016 et une utilisation ultérieure: SELECT DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', DateField)
select ...
from ...
where YourDateColumn >= getdate()-1
Bonjour, j'ai maintenant passé beaucoup de temps depuis le message d'origine, mais j'ai eu un problème similaire et je veux partager.
J'ai un champ datetime avec ce format AAAA-MM-JJ hh: mm: ss, et je veux 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, j'obtiens tout le registre de ligne en ce jour.
J'espère que cela aidera n'importe qui.
Dans SQL Server (pour les dernières 24 heures):
SELECT *
FROM mytable
WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()