mysql怎么确定日期是星期_关于mysql:从日期选择星期几

我在MySQL中有下表记录了每天发生的事情的事件计数

event_date     event_count

2011-05-03     21

2011-05-04     12

2011-05-05     12

我希望能够按日期范围和星期几有效地查询此内容。 例如-"五月的星期二的event_count是多少?"

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

该表将包含成千上万的行,因此如果有选择,我将选择最有效的解决方案(而不是最简单的解决方案)。

感谢您的书面问题。 仅供参考-问候和标题标签在SO上不受欢迎,因为它不是论坛。 希望您找到想要的答案。

在查询中使用DAYOFWEEK,例如:

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

这将查找五月的星期六的所有信息。

为了获得最快的读取速度,请存储星期几(以及您需要的其他任何时间)中的非规范化字段。 这样,您可以为列编制索引并避免全表扫描。

只需先尝试上面的方法,看看它是否适合您的需求,如果不合适,请添加一些额外的列并在写入时存储数据。 只需注意更新异常(如果更改event_date,请确保更新day_of_week列)。

请注意,非规范化字段将增加写操作所需的时间,增加写操作的时间,并占用更多空间。 确保您确实需要该好处,并且可以衡量它是否对您有帮助。

对于2012年的日期,DAYOFWEEK在2008年之后不被认可。对于2012年的日期,请使用DAY。 很好的响应,只是想为其他人寻找注释,以了解如何在较新版本的SQL Server上执行此操作。

如果要用文本表示星期几,请使用DAYNAME()函数。

检查DAYOFWEEK()函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值