To trochę nieprzyjemne, gdy robisz to z typami danych typu datetime; fajny kandydat do funkcji przechowywanej.
DATE_SUB(DATE_SUB(time, INTERVAL MOD(MINUTE(time),5) MINUTE ),
INTERVAL SECOND(time) SECOND)
Łatwiej jest używać znaczników czasu UNIXTIME, ale jest to ograniczone do zakresu dat 1970-2038.
FROM_UNIXTIME(UNIX_TIMESTAMP(time) - MOD(UNIX_TIMESTAMP(time),300))
Powodzenia.