如何在 mysql 中获取起始日期的月份

2022-08-30 15:59:30

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

SELECT * 
  FROM table 
 WHERE amount > 1000 

但是我想获取限制在某个月份和年份的结果(基于用户的输入)...我是这样尝试的:

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

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

在该表中,它实际上有两个日期:但我关注的是 .输入值将为月和年。如何对基于当年该月结果的 SQL 语句进行短语化?startDateendDatestartDate


答案 1

您很接近 - 向后进行了比较(假设是 DATETIME 或 TIMESTAMP 数据类型):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])

有关格式化语法的文档,请参阅文档。

参考:



答案 2

使用该函数。month()

select month(now());

推荐