Enquanto eu estava pesquisando, pensei que seria bom modificar a solução BETWEEN para mostrar um exemplo para uma data não estática / string específica, mas sim uma data variável, ou hoje como CURRENT_DATE()
. Isso IRÁ usar o índice na coluna log_timestamp.
SELECT *
FROM some_table
WHERE
log_timestamp
BETWEEN
timestamp(CURRENT_DATE())
AND
timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL '86399.999999' SECOND_MICROSECOND));
Fiz os segundos / microssegundos para evitar o caso das 12h do dia seguinte. No entanto, você também pode fazer `INTERVAL '1 DAY' por meio de operadores de comparação para uma abordagem não BETWEEN mais amigável à leitura:
SELECT *
FROM some_table
WHERE
log_timestamp >= timestamp(CURRENT_DATE()) AND
log_timestamp < timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY));
Ambas as abordagens usarão o índice e devem ter um desempenho MUITO mais rápido. Ambos parecem ser igualmente rápidos.