从日期中选择星期几

时间:2011-05-11 16:16:30

标签: mysql

我在MySQL中有以下表格,记录每天发生的事件的事件计数

event_date     event_count
2011-05-03     21
2011-05-04     12
2011-05-05     12

我希望能够通过日期范围和星期几有效地查询。例如 - “5月星期二的event_count是什么?”

目前,event_date字段是日期类型。 MySQL中是否有任何函数可以按星期几查询此列,还是应该在表中添加另一列来存储星期几?

该表将包含数十万行,因此我可以选择最有效的解决方案(而不是最简单的方法)。

3 个答案:

答案 0 :(得分:56)

在查询中使用DAYOFWEEK,例如:

SELECT * FROM mytable WHERE MONTH(event_date) = 5 AND DAYOFWEEK(event_date) = 7;

这将找到5月份星期六的所有信息。

要获得最快的读取,存储一个非常规字段,即一周中的某一天(以及您需要的任何其他内容)。这样,您可以索引列并避免全表扫描。

首先尝试上面的内容,看看它是否符合您的需求,如果没有,请添加一些额外的列并将数据存储在写入中。请注意更新异常(如果更改event_date,请确保更新day_of_week列。)

请注意,非规范化字段将增加写入所需的时间,增加写入计算并占用更多空间。确保你真的需要这个好处并且可以衡量它对你的帮助。

答案 1 :(得分:4)

检查DAYOFWEEK()功能

答案 2 :(得分:4)

如果您想要星期几的文字表示 - 请使用DAYNAME()函数。