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=????
SELECT * FROM table where DATE(date)=CURDATE()
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 datetime
s.
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.
SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW());
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.
SET @day = '2017-12-12' ;
SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY ) ;
Essaye ça
SELECT * FROM table WHERE DATE(my_date)=DATE(now())
my_date -> column name
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