You were close – got the comparison backwards (assuming startDate
is a DATETIME or TIMESTAMP data type):
SELECT *
FROM table
WHERE amount > 1000
AND MONTH(dateStart) = {$m}
Caveats:
- Mind that you are using mysql_escape_string or you risk SQL injection attacks.
- Function calls on columns means that an index, if one exists, can not be used
Alternatives:
Because using functions on columns can’t use indexes, a better approach would be to use BETWEEN
and the STR_TO_DATE
functions:
WHERE startdate BETWEEN STR_TO_DATE([start_date], [format])
AND STR_TO_DATE([end_date], [format])
See the documentation for formatting syntax.