按字段的月份选择

时间:2010-06-08 12:49:31

标签: mysql

如何使用月/年从表中获取记录?我有一张这样的桌子:

Name - varchar
DueDate -datetime
Status -boll

DueDate是项目截止日期,我想要记录对应月/年,而不是完整日期,我的意思是特定月份的记录。

我怎样才能在mysql中执行此操作?

9 个答案:

答案 0 :(得分:53)

只需使用MONTH()YEAR()

SELECT * FROM Project WHERE MONTH(DueDate) = 1 AND YEAR(DueDate) = 2010

答案 1 :(得分:27)

您可以使用之间的声明:

select * from Project 
  where DueDate between '2010-01-01' and '2010-02-01'

答案 2 :(得分:6)

请勿在{{1​​}}和MONTH()使用此推荐的解决方案。它阻止MySQL在列YEAR()上使用索引(如果有),它会强制MySQL检查表中的所有行。

相反,请使用DueDate这样的句子:

BETWEEN

或使用IN子句的另一种解决方案:

SELECT * FROM Project 
WHERE DueDate BETWEEN '2010-01-01' AND '2010-02-01'

这两个解决方案允许MySQL使用索引,因此性能会更好。

答案 3 :(得分:4)

SELECT Name FROM Table Where MONTH(datetime) = 1;

1 = 1月。

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_month

答案 4 :(得分:3)

它将选择当前年度的特定月份

SELECT * FROM Project WHERE MONTH(DueDate) = 1 AND YEAR(DueDate) = YEAR(NOW())

答案 5 :(得分:1)

您可以为DueDate提取MONTH()YEAR()

答案 6 :(得分:1)

SELECT * WHERE MONTH(DueDate) = '5' AND YEAR(DueDate) = '1987';

答案 7 :(得分:1)

如果输入月份格式“ Y-m”,则可以使用:

SELECT * FROM Project WHERE DATE_FORMAT(DueDate,"%Y-%m") = '2010-01'

答案 8 :(得分:0)

SELECT * FROM TABLE WHERE DueDate LIKE '2020-01%';

以防万一您可以将日期数据细分为字符串。