问题描述
想通了…有点麻烦,但这就是。
FROM_DAYS(TO_DAYS(TIMESTAMP) -MOD(TO_DAYS(TIMESTAMP) -1, 7))
而且,如果您的业务规则说您的工作周从星期一开始,请将更改-1
为-2
。
几年过去了,我终于可以写这篇文章了。 http://www.plumislandmedia.net/mysql/sql-reporting-time- intervals/
解决方法
Oracle的表服务器提供了一个内置功能TRUNC(timestamp,'DY')
。此功能将任何时间戳转换为前一个星期日的午夜。在MySQL中执行此操作的最佳方法是什么?
Oracle还提供TRUNC(timestamp,'MM')
将时间戳转换为发生该月的第一天的午夜。在MySQL中,这很简单:
TIMESTAMP(DATE_FORMAT(timestamp,'%Y-%m-01'))
但是这个DATE_FORMAT
技巧将在数周内失效。我知道此WEEK(timestamp)
功能,但是我真的不想要一年内的星期数。这些东西是用于多年的工作。