Você pode usar o HOUR() função:
SELECT * FROM 'table' WHERE HOUR(`updatetime`) = 9
Infelizmente, o desempenho desta consulta será horrível , assim que você passar por alguns milhares de linhas - as funções não são indexáveis, portanto, haverá uma verificação completa da tabela toda vez que essa consulta for executada.
O que fizemos em uma situação semelhante:criamos outra coluna
updatetime_hour
, indexou-o e preencheu-o na inserção (e atualizado na atualização); então a consulta se torna rápida:SELECT * FROM 'table' WHERE `updatetime_hour` = 9
Sim, desnormalizamos os dados e é um pouco mais de limpeza, mas ainda não vi uma solução mais rápida. (Consideramos e medimos os acionadores de inserção e atualização para preencher o
updatetime_hour
de updatetime
, mas decidiu contra por desempenho; veja se eles seriam úteis para você.)