Pergunta

Aqui está minha consulta:

SELECT count(*) 
  FROM table_testcase_execution 
 WHERE campaign_session_id = any(SELECT campaign_session_id 
                                   FROM table_campaign_session 
                                  WHERE campaign_session_name = 'sitename') 
   AND timestamp BETWEEN "1288929643485" AND "1289010305536"

Isso funciona muito bem, o problema é que eu tenho que usar um LIKE NESSE porque eles contêm 3 dígitos extras (por isso é um registro de data e hora mais 3 dígitos).

Portanto, estou usando um strtotime no PHP e tentando corresponder a eles no banco de dados, mas eles contêm os 3 dígitos extras. Existe uma maneira de refazer este SQL ou adicionar um LIKE Cláusula para cada um desses registros de data e hora?

      "1288929643485" AND "1289010305536"

Algo como

 SELECT count(*) 
   FROM table_testcase_execution 
  WHERE campaign_session_id = any(SELECT campaign_session_id 
                                    FROM table_campaign_session 
                                   WHERE campaign_session_name = 'sitename') 
    AND timestamp between LIKE "1288929643%" AND "1289010305%" 
Foi útil?

Solução

Supondo que os 3 dígitos extras possam variar de 000 a 999, então você pode fazer algo assim:

select count(*) from table_testcase_execution
where campaign_session_id = any(
    SELECT campaign_session_id
    FROM table_campaign_session
    WHERE campaign_session_name = 'sitename')
AND timestamp >= "1288929643000" AND timestamp <= "1289010305999"

Isso junto com um índice em timestamp A coluna deve lhe dar um bom desempenho.

Outras dicas

Como os registros de data e hora em sua consulta são strings, você não pode apenas truncar os três dígitos indesejados com SUBSTRING()?

select count(*) 
from table_testcase_execution 
where campaign_session_id = any(SELECT campaign_session_id FROM table_campaign_session WHERE campaign_session_name = 'sitename') 
AND timestamp between SUBSTRING(@timestamp1, -3) AND SUBSTRING(@timestamp2, -3)

(assumindo @timestamp1 e @timestamp2 são os respectivos valores de data e hora fornecidos à consulta ...)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top