由DATEPART()选择行

时间:2012-11-15 16:32:41

标签: mysql sql datepart

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

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

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

4 个答案:

答案 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

(mysql fiddle)

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

(tsql fiddle)

答案 3 :(得分:0)

如果您的DATEPART无法在MYSQL中运行,那么您可以使用:

SELECT * FROM MyTable WHERE MONTH(joinningDate)=MONTH(NOW())-1 and YEAR(joinningDate)=YEAR(NOW());

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