2009-10-14 11 views
0

Je sais comment le faire dans Oracle, mais je ne peux pas trouver la même fonction dans mySQL. essayer de google it..mais ne peut pas le trouver.comment interroger le champ de date entre deux jours dans mySQL

J'ai une table, il y a un nom de champ « create_date », attribut est datetime si le format de la valeur du champ ressemble « 2009-09-25 11:48:24 »

Maintenant, je veux ajouter la date condition, je veux trouver create_date entre 2009/09/01 à 2009/10/14 ma commande sql: où 1 = 1 et date_format (create_date, '% d /% m /% Y') ENTRE '01/09/2009' ET '14/10/2009 '

il est OK..I peut obtenir rowData mais quand je change la date de début à 2009/09/30, date de fin est le même

date_format (create_date, '% d /% m /% Y') ENTRE '30/09/2009' ET '14/10/2009'

et aucun résultat ... mais si Je change la date de début au 2009/10/01, je peux obtenir le résultat encore. Je veux savoir ce qui s'est passé? il devrait infliger une amende à

Répondre

1

Je pense que vous utilisez une fonction (DATE_FORMAT) sur la mauvaise chose: vous devez STR_TO_DATE vos paramètres et faire MySQL faire une comparaison de plage de dates, au lieu de convertir la valeur de la ligne à une chaîne et de faire une comparaison de gamme de chaînes (je ne suis même pas sûr que cela a du sens ou fonctionne dans tous les cas). Essayez ceci:

SELECT ... 
    FROM my_table t 
WHERE t.create_date BETWEEN STR_TO_DATE('2009/09/01', '%Y/%m/%d') 
         AND STR_TO_DATE('2009/10/01', '%Y/%m/%d') 

Je pense que cela fonctionnerait mieux.

Questions connexes