我想做的是为当前日期添加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'
SELECT FROM_UNIXTIME(3600 + 900 * CEIL(UNIX_TIMESTAMP(datetime_column) / 900))
FROM table
UNIX_TIMESTAMP
将datetime转换为秒数。
/ 900
计算15min的量。
CEIL
将最后一个不完整块转换为完整块。
* 900
将块数量转换回秒。
+ 3600
增加一个小时。
FROM_UNIXTIME
将秒数转换为日期时间。
假设它已经有15分钟了,它只会增加一个小时,你必须对时间做一些计算,然后重新将其添加到日期:
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分钟。