2010-09-27 3 views

Répondre

5
  • UNIX_TIMESTAMP retourne un entier avec seconde depuis l'époque
  • DATE() retourne une chaîne comme ' yyyy-mm-dd '

En comparant ces 2 conduire à des résultats inattendus, je suis sûr. Utilisez soit UNIX_TIMESTAMP ou DATE, mais faites-le pour les deux. (Ou faire un UNIX_TIMESTAMP(DATE(NOW())) si vous comparez les formats appropriés.

+0

merci les gens c'est un peu stupide de ma part – kalpaitch

1

Vous comparez avec l'époque UNIX une valeur de date (aaaa-mm-jj), de sorte que votre requête ne fonctionne pas.

Assurez-vous Vous utilisez les bons types de données pour le cas approprié.Vous avez besoin de dates, utilisez un datetime ou une date, pas un horodatage Plus le fait qu'une colonne timestamp dans une table MySQL ait des propriétés spéciales

De même, utilisez un index dans Votre requête ne sera pas optimisée à cause de la fonction now() dans la clause where Essayez d'obtenir la valeur de now dans une variable et exécutez votre requête en utilisant cette variable, l'optimiseur de MySQL aura une chance de opti mize ta requête.

Questions connexes