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