MySQL week()函数中有模式,可以定义
"Week 1 is the first week with 4 or more days this year".
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_week
但是,我遇到了一个特殊的客户,他们有这样的定义
"Week 1 is the first week with 5 or more days this year".
是否有任何方法可以设置此规则,或任何其他解决方法来缓解这种情况?
示例:
根据客户端的规则,本周属于2015年,因为2015年有5天。但是在MySQL week()中,只有当这一年超过4天,或者第一个星期日/星期一时,才能设置mode。
最佳答案
我不确定我的要求是否正确,但我会使用最符合您要求的模式的函数(周日与周一作为开始日,0 或 1 开始周数)并调用 WEEK()
前一天具有相同参数的函数。如果属于同一个周数,则有5天。否则,返回增量值(下周)。
因此,假设您需要找到给定日期 date
的第一个有 5 天的星期。
IF(WEEK(date, 1) = WEEK(DATE_SUB(date, INTERVAL 1 DAY),1), WEEK(date,1), WEEK(date,1) + 1)
关于mysql - 一年中的自定义周(今年 5 天或更多天),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52960247/