Comment comparer des dates d’horodatage avec un paramètre de date uniquement dans MySQL?

Dans une instruction SQL, comment comparer une date enregistrée sous TIMESTAMP avec une date au format AAAA-MM-JJ?

Ex .: SELECT * FROM table WHERE timestamp = '2012-05-05'

Je veux que cette requête renvoie toutes les lignes ayant un horodatage dans le jour spécifié, mais elle ne renvoie que les lignes ayant un horodatage à minuit.

Merci

Vous pouvez utiliser la fonction DATE() pour extraire la partie date de l’horodatage:

 SELECT * FROM table WHERE DATE(timestamp) = '2012-05-05' 

Cependant, si vous avez un index sur la colonne timestamp, cela serait plus rapide car il pourrait utiliser l’index:

 SELECT * FROM table WHERE timestamp BETWEEN '2012-05-05 00:00:00' AND '2012-05-05 23:59:59' 
 SELECT * FROM table WHERE timestamp >= '2012-05-05 00:00:00' AND timestamp <= '2012-05-05 23:59:59' 
  WHERE cast(timestamp as date) = '2012-05-05' 

Utilisez une fonction de conversion de MYSQL:

 SELECT * FROM table WHERE DATE(timestamp) = '2012-05-05' 

Cela devrait fonctionner

 Use SELECT * FROM table WHERE DATE(2012-05-05 00:00:00) = '2012-05-05' 

Si vous utilisez des parameters SQL pour exécuter la requête, cela serait utile

 SELECT * FROM table WHERE timestamp between concat(date(?), ' ', '00:00:00') and concat(date(?), ' ', '23:59:59') 

Lorsque j’ai lu votre question, je pensais que vous étiez sur Oracle DB jusqu’à ce que je voie le tag ‘MySQL’. Quoi qu’il en soit, pour les personnes travaillant avec Oracle, voici le chemin:

 SELECT * FROM table where timestamp = to_timestamp('21.08.2017 09:31:57', 'dd-mm-yyyy hh24:mi:ss');