如何使用月/年从表中获取记录?我有这样一张桌子:
Name - varchar
DueDate -datetime
Status -boll
Run Code Online (Sandbox Code Playgroud)
DueDate 是项目截止日期,我想要记录对应月/年,而不是完整日期,我的意思是特定月份的记录.
我怎么能在mysql中这样做?
Kee*_*per 58
SELECT * FROM Project WHERE MONTH(DueDate) = 1 AND YEAR(DueDate) = 2010
Run Code Online (Sandbox Code Playgroud)
Tod*_*d R 27
您可以使用之间的语句:
select * from Project
where DueDate between '2010-01-01' and '2010-02-01'
Run Code Online (Sandbox Code Playgroud)
不要使用此这里推荐的解决方案MONTH()和YEAR().它阻止MySQL在列上使用索引,DueDate如果你有一个,它会强制MySQL检查表中的所有行.
相反,使用这样的BETWEEN子句:
SELECT * FROM Project
WHERE DueDate BETWEEN '2010-01-01' AND '2010-02-01'
Run Code Online (Sandbox Code Playgroud)
或IN子句的另一个解决方案:
SELECT * FROM Project
WHERE DueDate IN ('2010-01-01', '2010-01-02', '2010-01-03', ..., '2010-01-31')
Run Code Online (Sandbox Code Playgroud)
这两个解决方案允许MySQL使用索引,因此性能会更好.