Mysql DATE_ADD 1 小时,我希望分钟数为 15 或 30

Mysql DATE_ADD 1 hour and I want minutes be 15, or 30

我想做的是在当前日期上加 1 小时 + 使分钟数在 15 分钟或 30 分钟内。 示例:

'2022-05-19 22:13:28'

I want it to be :

'2022-05-19 23:15:00'

另一个例子


'2022-05-19 22:24:00'

I want it to be:

'2022-05-19 23:30:00'

假设如果它已经是偶数 15 分钟,它只会增加一个小时,你必须对时间进行一些计算,然后 re-add 它到日期:

select date_add(date(d), interval ceil(time_to_sec(d)/900)*900+3600 second)
from (select '2022-05-19 22:13:28' d union all select '2022-05-19 22:24:00' union all select '2022-05-19 22:15:00' union all select '2022-05-19 21:59:00' union all select '2022-05-19 21:44:00') foo

除以 900 秒,取上限,然后乘以 900,四舍五入到最接近的偶数 15 分钟。

SELECT FROM_UNIXTIME(3600 + 900 * CEIL(UNIX_TIMESTAMP(datetime_column) / 900))
FROM table

UNIX_TIMESTAMP 将日期时间转换为秒数。

/ 900计算15min的量。块在里面。

CEIL 将不完整的最后一个块转换为完整的块。

* 900 将块数转换回秒数。

+ 3600 增加一个小时。

FROM_UNIXTIME 将秒数转换为日期时间。