Малко е гадно, когато го правите с типове данни за дата и час; добър кандидат за съхранена функция.
DATE_SUB(DATE_SUB(time, INTERVAL MOD(MINUTE(time),5) MINUTE ),
INTERVAL SECOND(time) SECOND)
По-лесно е, когато използвате времеви печати UNIXTIME, но това е ограничено до период от време 1970 – 2038.
FROM_UNIXTIME(UNIX_TIMESTAMP(time) - MOD(UNIX_TIMESTAMP(time),300))
Успех.