如何在mysql中获得自日期起的月份?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (60)

我希望能够使用如下语句从MySQL获取结果:

SELECT * 
  FROM table 
 WHERE amount > 1000 

但是我想获取一个月和一年的限制结果(基于用户的输入)...。我是这样想的:

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

$m是一个月,但它带来了错误。

在该表中,它实际上有两个日期:startDateendDate但我现在的重点是startDate...。输入值将是月份和年份。我如何表述基于该年的那个月获得结果的SQL语句?

提问于
用户回答回答于

你几乎把比较倒过来了(假设startDate是日期时间或时间戳数据类型):

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])

用户回答回答于

扫码关注云+社区