一尘不染

我如何从MySQL中获取日期的月份

mysql

我希望能够使用以下语句从mysql中获取结果:

SELECT * 
  FROM table 
 WHERE amount > 1000

但是我想获取限制在某个月和一年中的结果(基于用户的输入)…我试图这样做:

SELECT * 
  FROM table 
 WHERE amount > 1000 
   AND dateStart = MONTH('$m')

$m一个月,但它给了错误。

在该表中,它实际上有两个日期:
startDateendDate,但我注重startDate。输入值为月份和年份。我该如何措辞根据当年那个月获得结果的SQL语句?


阅读 2029

收藏
2020-05-17

共1个答案

一尘不染

您很接近-向后进行比较(假设startDate是DATETIME或TIMESTAMP数据类型):

SELECT * 
  FROM table 
 WHERE amount > 1000 
   AND MONTH(dateStart) = {$m}

注意事项:


备择方案:


因为在列上使用函数不能使用索引,所以更好的方法是使用BETWEENSTR_TO_DATE函数:

WHERE startdate BETWEEN STR_TO_DATE([start_date], [format]) 
                    AND STR_TO_DATE([end_date], [format])

请参阅文档以了解格式语法。

参考:


2020-05-17