选择SQL的月份和年份

时间:2016-02-17 13:42:51

标签: php html mysql sql

我目前有一个代码可以根据某些信息选择某些sql查询。目前正如此:

$sql = "SELECT * FROM transaction WHERE id_task = '2' AND id_child = '$number' AND MONTH(datetime) = MONTH('2016-02-13 20:36:41')";

问题在于,虽然它确实选择了正确的月份,但我还想指定年份,但是,我不知道如何做到这一点。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

一个天真的解决方案是这样的:

MONTH(datetime) = MONTH('2016-02-13 20:36:41')
and YEAR(datetime) = YEAR('2016-02-13 20:36:41')

但是可以使用索引的更好,更高效的方法是:

WHERE
  datetime>=subdate(date('2016-02-13 20:36:41'), (day('2016-02-13 20:36:41')-1))
  and datetime<last_day('2016-02-13 20:36:41')+interval 1 day

这将计算给定月份的第一天:

subdate(date('2016-02-13 20:36:41'), (day('2016-02-13 20:36:41')-1))

这将计算下个月的第一天:

last_day('2016-02-13 20:36:41')+interval 1 day

因此您只需使用>=first_day_of_given_month<first_day_of_next_month

即可