Vous étiez proche - vous avez obtenu la comparaison à l'envers (en supposant que startDate
est un type de données DATETIME ou TIMESTAMP) :
SELECT *
FROM table
WHERE amount > 1000
AND MONTH(dateStart) = {$m}
Mises en garde :
- N'oubliez pas que vous utilisez mysql_escape_string ou vous risquez des attaques par injection SQL .
- Les appels de fonction sur les colonnes signifient qu'un index, s'il existe, ne peut pas être utilisé
Alternatives :
Parce que l'utilisation de fonctions sur des colonnes ne peut pas utiliser d'index, une meilleure approche serait d'utiliser BETWEEN
et le STR_TO_DATE
fonctions :
WHERE startdate BETWEEN STR_TO_DATE([start_date], [format])
AND STR_TO_DATE([end_date], [format])
Voir la documentation pour la syntaxe de formatage.