我希望能够使用下面这样的语句从mysql中获取结果:
SELECT *
FROM table
WHERE amount > 1000
但是我想获取某个特定月份和年份的结果(基于用户的输入)……我是这样尝试的:
SELECT *
FROM table
WHERE amount > 1000
AND dateStart = MONTH('$m')
...$m
是一个月,但它给出了错误。
在该表中,它实际上有两个日期:startDate
和endDate
,但我主要关注startDate
。输入值将是月份和年份。我该如何表述根据当年那个月份获得结果的SQL语句?
发布于 2010-01-11 12:02:22
使用month()
函数。
select month(now());
发布于 2010-01-11 12:09:59
例如。
$date = sprintf("'%04d-%02d-01'", $year, $month);
$query = "
SELECT
x,y,dateStart
FROM
tablename
WHERE
AND amount > 1000
AND dateStart >= $date
AND dateStart < $date+Interval 1 month
";
mysql_query($query, ...
这将创建一个查询,例如
WHERE
AND amount > 1000
AND dateStart >= '2010-01-01'
AND dateStart < '2010-01-01'+Interval 1 month
+ Interval 1 month
是date_add()的替代方案。
SELECT Date('2010-01-01'+Interval 1 month)
-> 2010-02-01
SELECT Date('2010-12-01'+Interval 1 month)
-> 2011-01-01
这样,你总是可以得到下个月的第一天。您想要的记录必须在该日期之前,但在/等于您传递给dateStart ()的月份(和年份)的第一天之后。
'2010-01-01'+Interval 1 month
不会在不同行之间更改。MySQL将只计算一次该术语,并且可以利用索引进行搜索。
发布于 2010-01-11 12:18:17
试试这个:
SELECT *
FROM table
WHERE amount > 1000 AND MONTH(dateStart) = MONTH('$m') AND YEAR(dateStart) = YEAR('$m')
https://stackoverflow.com/questions/2039839
复制相似问题