Du var tæt på - fik sammenligningen baglæns (forudsat startDate
er en DATETIME eller TIMESTAMP datatype):
SELECT *
FROM table
WHERE amount > 1000
AND MONTH(dateStart) = {$m}
Forbehold:
- Husk at du bruger mysql_escape_string eller du risikerer SQL-injektionsangreb .
- Funktionskald på kolonner betyder, at et indeks, hvis et findes, ikke kan bruges
Alternativer:
Fordi brug af funktioner på kolonner ikke kan bruge indekser, ville en bedre tilgang være at bruge BETWEEN
og STR_TO_DATE
funktioner:
WHERE startdate BETWEEN STR_TO_DATE([start_date], [format])
AND STR_TO_DATE([end_date], [format])
Se dokumentationen for formateringssyntaks.