web-dev-qa-db-fra.com

MySQL Comment SÉLECTIONNER les données de la table enregistrée aujourd'hui?

Utilisez PHP et MySQL. Dans ma table, il y a un champ de date (date/heure) enregistré par la fonction NOW () sql. Exemple de valeur des données dans ce champ est 2010-10-07 10:57:36 . Comment puis-je sélectionner toutes les données dont jour-mois-année est aujourd'hui? J'essaie d'utiliser le code ci-dessous:

  SELECT * FROM table WHERE date=????
14
AJ OP

SELECT * FROM table where DATE(date)=CURDATE()

21

Essaye ça:

SELECT * FROM table WHERE date > CURDATE();

CURDATE() renverra la date actuelle sous la forme 2011-10-07 qui sera convertie en 2011-10-07 00:00:00 lors de la comparaison de datetimes.

Notez que si vous utilisez DATE(date) = CURDATE(), vous exécuterez une conversion de date pour every row dans la table, ce qui sera très mauvais pour votre performance si vous avez plusieurs lignes et/ou vous devez exécuter la requête souvent. Assurez-vous également que vous avez un index sur date, sinon les deux méthodes seront encore plus lentes.

26
Kaivosukeltaja
SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW());
3
Bryan

La fonction date_format vous permet de basculer facilement entre différentes granularités:

Sélectionnez tout du même jour:

select * from table 
where date_format(date, '%Y-%m-%d') = date_format(now(), '%Y-%m-%d');

À partir du même mois:

select * from table 
where date_format(date, '%Y-%m') = date_format(now(), '%Y-%m');

À partir de la même année:

select * from table 
where date_format(date, '%Y') = date_format(now(), '%Y');

A partir de la même heure:

select * from table 
where date_format(date, '%Y-%m-%d %H') = date_format(now(), '%Y-%m-%d %H');

etc.

2
michael667
SET @day = '2017-12-12' ;

SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY ) ;
1
Fredy

Essaye ça

SELECT * FROM table WHERE DATE(my_date)=DATE(now())

my_date -> column name
1
vivek

utilisez quelque chose comme ça ça marche exactement sur mon code (base de données d'accès):

select * from Table t where t.column>=Date() and t.column< Date() + 1
0
Selman Akdemir