Mysql 四舍五入到上四分之一小时,具有灵活性
我想用另一列(称为“RoundHours”)上的小时增量(表中称为“小时”)将表更新为四舍五入到最近的四分之一小时,并具有3分钟的灵活性 下面是我的typescript函数,它完全符合我的要求:Mysql 四舍五入到上四分之一小时,具有灵活性,mysql,sql,Mysql,Sql,我想用另一列(称为“RoundHours”)上的小时增量(表中称为“小时”)将表更新为四舍五入到最近的四分之一小时,并具有3分钟的灵活性 下面是我的typescript函数,它完全符合我的要求: function RoundHourToUpperQuarter(hourNumber: number, flexibilityInMinutes: number) { if (hourNumber === 0) { return 0; } else {
function RoundHourToUpperQuarter(hourNumber: number, flexibilityInMinutes: number) {
if (hourNumber === 0) {
return 0;
} else {
if (hourNumber <= 0.25 + (flexibilityInMinutes/60)) {
return 0.25;
} else {
return Math.ceil((hourNumber-(flexibilityInMinutes/60))*4)/4
}
}
}
目标是添加一列,其中有四舍五入到上季度的小时数,如上所述
示例:
Hours : 12/60 => RoundHours : 0.25
Hours : 30/60 => RoundHours : 0.5
Hours : 62/60 => RoundHours : 1
Hours : 64/60 => RoundHours : 1.25
提前感谢您的回答,Zirion.如果我理解正确,您希望添加12分钟,然后截断到最接近的15分钟 这在“秒”域中比使用日期/时间函数更容易实现。其想法是:
select from_unixtime(15 * 60 * floor((unix_timestamp(now()) + 12 * 60) / (15 * 60)))
只需将
now()
替换为所需的datetime
值即可。您的数据模型似乎将其分布在多个列中。我建议改为使用一个datetime
列。但是,如果您真的需要,您可以从您的时间组件中构造一个datetime
值。向我们展示一些示例表数据和预期结果-全部以格式化文本(而不是图像)的形式显示。我无法提供更多的代码示例,因为我的工作链接到一个数据库,我无法提供给您。示例数据不一定是真实数据。只是为了说明问题。添加了示例数据,我希望这是您的意图。