web-dev-qa-db-fra.com

Mysql Comparer deux champs datetime

Je veux comparer deux dates avec le temps, je veux tous les résultats from tbl where date1 > date2

Select * From temp where mydate > '2009-06-29 04:00:44';

mais il s'agit simplement de comparer les dates et non l'heure. ça me donne tous les résultats de la date d'aujourd'hui

'2009-06-29 11:08:57'
'2009-06-29 11:14:35'
'2009-06-29 11:12:38'
'2009-06-29 11:37:48'
'2009-06-29 11:52:17'
'2009-06-29 12:12:50'
'2009-06-29 12:13:38'
'2009-06-29 12:19:24'
'2009-06-29 12:27:25'
'2009-06-29 12:28:49'
'2009-06-29 12:35:54'
'2009-06-29 12:36:54'
'2009-06-29 12:49:57'
'2009-06-29 12:58:04'
'2009-06-29 04:13:20'
'2009-06-29 04:56:19'
'2009-06-29 05:00:23'
'2009-06-29 05:04:26'
'2009-06-29 05:08:17'
'2009-06-29 05:26:57'
'2009-06-29 05:29:06'
'2009-06-29 05:32:11'
'2009-06-29 05:52:07'

Merci d'avance!

37
MySQL DBA

La requête que vous souhaitez afficher à titre d'exemple est:

SELECT * FROM temp WHERE mydate > '2009-06-29 16:00:44';

04:00:00 est 4AM, donc tous les résultats que vous affichez viennent après cela, ce qui est correct.

Si vous souhaitez tout afficher après 16 heures, vous devez utiliser la notation correcte (24 heures) dans votre requête.

Pour rendre les choses un peu plus claires, essayez ceci:

SELECT mydate, DATE_FORMAT(mydate, '%r') FROM temp;

Cela vous montrera la date et son heure de 12 heures.

62
Jeremy Smyth

Vous pouvez utiliser le SQL suivant pour comparer la date et l'heure -

Select * From temp where mydate > STR_TO_DATE('2009-06-29 04:00:44', '%Y-%m-%d %H:%i:%s');

Sortie mysql attachée lorsque j'utilisais le même SQL sur le même type de table et de champ que vous avez mentionné dans le problème-

enter image description here

Cela devrait fonctionner parfaitement.

12
Anjuman

Votre requête a apparemment renvoyé toutes les dates correctes, même en tenant compte de l'heure.

Si vous n'êtes toujours pas satisfait des résultats, essayez DATEDIFF et recherchez des résultats négatifs/positifs entre les deux dates.

Assurez-vous que votre colonne mydate est de type datetime.

4
Sampson

Voulez-vous le commander?

Select * From temp where mydate > '2009-06-29 04:00:44' ORDER BY mydate;
3
Erik