mysql - 一年中的自定义周(今年 5 天或更多天)

标签 mysql date

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". 

是否有任何方法可以设置此规则,或任何其他解决方法来缓解这种情况?

示例:

enter image description here 根据客户端的规则,本周属于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/

相关文章:

mysql - LOAD FILE,最后一行和最后一列输出错误

将 Excel 日期数据保存到 MySQL 时,Java 日期格式化程序不起作用

mysql - 更新表,以便多个用户获得新行

hibernate - org.hibernate.hql.internal.ast.QuerySyntaxException : unexpected token: Apr near line 1, 第 81 列

java - 将时间单位添加到 Joda DateTime 对象

计算给定年份和年份的日期

c# - 将更多表列添加到列表框显示查询

sql - 当行不存在时, "SELECT FOR UPDATE"是否会阻止其他连接插入?

date - 如何将与安装相关的计算字符串添加到 InnoSetup 脚本?

MySQL子查询与主查询值的日期时间比较