Другая альтернатива:
для получения ближайшего часа:
TIMESTAMPADD(MINUTE,
ROUND(TIMESTAMPDIFF(MINUTE,CURDATE(),timestamp_column_name)/60)*60,
CURDATE())
Вместо CURDATE()
вы можете использовать произвольную дату, например '2000-01-01'
Не уверен, что могут возникнуть проблемы с использованием CURDATE()
, если системная дата изменяется между двумя вызовами функции, не знаю, будет ли Mysql вызывать оба одновременно.
при изменении 60 на 15 будет получен ближайший 15-минутный интервал, с помощью ВТОРОГО вы можете получить ближайший желаемый второй интервал и т. Д.
Чтобы получить предыдущий час, используйте TRUNCATE()
или FLOOR()
вместо ROUND()
.
Надеюсь, это поможет.