MySQL SELECT特定年份的月份

时间:2014-11-04 14:52:37

标签: mysql datetime datetime-format

是的,我已阅读文档here

我有以下查询:

SELECT * FROM db.table
WHERE event_type = 3
AND (YEAR(event_time) = 2014 AND MONTH(event_time) = 10)

这将返回2014年10月以来的所有记录。很棒。只想问,是否有比写(YEAR(event_time) = 2014 AND MONTH(event_time) = 10)更短,更好或更简洁的方法?这是传统的"在某一年中提取特定月份的方式?

在这里学习。

2 个答案:

答案 0 :(得分:3)

如果您在event_time列上有索引,则使用YEARMONTH(或几乎任何函数)将阻止使用索引来完全优化查询。这样的事情会最快;我会留给您确定它是否最新:

SELECT * FROM db.table
WHERE event_type = 3
  AND event_time >= '2014-10-01' AND event_time < '2014-11-01'

这将在2014年10月为您提供一切,并且可以完全优化。

答案 1 :(得分:0)

您可以使用2014年记录的with子句创建临时视图,然后从该视图中仅提取10月。

因为每次查询都需要检查是否是2014年和10月。

所以我认为观点会做得更好。

您还可以通过添加索引

来提高性能