15

我需要从记录为一个月的数据库中获取行。我试过这个选择:

$result = mysql_query("SELECT * FROM my_table WHERE DATEPART('month', date_column)=11");

在数据库中有很多行的日期在 11. 月,但我没有得到任何结果。谁能帮我?谢谢!

4

4 回答 4

31

MySQL中没有DATEPART函数。使用MONTH(date_column)EXTRACT(MONTH FROM date_column)代替。

于 2012-11-15T16:57:50.733 回答
5
    SELECT * FROM my_table WHERE MONTH(date_column)=11
于 2012-11-15T16:34:48.323 回答
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

(mysql小提琴)

-- For tsql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01'
  and date_column < DATEADD(month,1,'2012-11-01')

(tsql小提琴)

于 2012-11-15T17:08:16.540 回答
-1

如果您的 DATEPART 在 MySQL 中不工作,那么您可以使用:

SELECT * 
FROM MyTable 
WHERE MONTH(joiningDate) = MONTH(NOW())-1 
  AND YEAR(joiningDate) = YEAR(NOW());

MyTable它将返回上个月插入的所有记录。

于 2017-12-14T08:40:53.837 回答