一尘不染

如何在MySQL中按周分组?

mysql

Oracle的表服务器提供了一个内置功能TRUNC(timestamp,'DY')。此功能将任何时间戳转换为前一个星期日的午夜。在MySQL中执行此操作的最佳方法是什么?

Oracle还提供TRUNC(timestamp,'MM')将时间戳转换为发生该月的第一天的午夜。在MySQL中,这很简单:

TIMESTAMP(DATE_FORMAT(timestamp, '%Y-%m-01'))

但是这个DATE_FORMAT技巧将在数周内失效。我知道此WEEK(timestamp)功能,但是我真的不想要一年内的星期数。这些东西是用于多年的工作。


阅读 317

收藏
2020-05-17

共1个答案

一尘不染

想通了…有点麻烦,但这就是。

FROM_DAYS(TO_DAYS(TIMESTAMP) -MOD(TO_DAYS(TIMESTAMP) -1, 7))

而且,如果您的业务规则说您的工作周从星期一开始,请将更改-1-2


编辑

几年过去了,我终于可以写这篇文章了。 http://www.plumislandmedia.net/mysql/sql-reporting-time-
intervals/

2020-05-17