我需要从数据库中获取记录为一个月的行。我试过这个SELECT:
$result = mysql_query("SELECT * FROM my_table WHERE DATEPART('month', date_column)=11");
在数据库中有很多行,其日期为11个月,但我没有得到任何结果。 谁能帮我?谢谢!
答案 0 :(得分:19)
MySQL中没有DATEPART
函数。请改用MONTH(date_column)
或EXTRACT(MONTH FROM date_column)
。
答案 1 :(得分:5)
SELECT * FROM my_table WHERE MONTH(date_column)=11
答案 2 :(得分:2)
如果你在date_column上有一个索引并且你关心性能,最好不要在列上应用函数。 (请注意这个解决方案,不要完全按照你的要求,因为它也涉及到这一年)
-- For mysql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01'
and date_column < '2012-11-01' + INTERVAL 1 MONTH
-- For tsql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01'
and date_column < DATEADD(month,1,'2012-11-01')
答案 3 :(得分:0)
如果您的DATEPART无法在MYSQL中运行,那么您可以使用:
SELECT * FROM MyTable WHERE MONTH(joinningDate)=MONTH(NOW())-1 and YEAR(joinningDate)=YEAR(NOW());
它将返回上个月在MyTable中插入的所有记录。