Consulta SQL por Hora?
Amigos, como faço para montar uma consulta sql por hora:
exemplo: tenho uma tabela com o campo no fotmato time,
e quero montar a pesquisa por um determinado horario
assim : DE 08:00:00 até 10:00:00
a consulta deve me retorna os valores agrupados por horario tipo todos
de 08:00:00 depois todos de 09:00:00 depois todos 10:00:00
exemplo: tenho uma tabela com o campo no fotmato time,
e quero montar a pesquisa por um determinado horario
assim : DE 08:00:00 até 10:00:00
a consulta deve me retorna os valores agrupados por horario tipo todos
de 08:00:00 depois todos de 09:00:00 depois todos 10:00:00
Fábio Galvão
Curtidas 0
Respostas
Farjola
02/01/2007
Acho que pelo SQL não tem como fazer deste jeito que vc quer, só se vc tiver um campo comum para todos os registros de uma faixa horaria ex:
03:10:05 - faixa 3
03:50:14 - faixa 3
04:24:45 - faixa 4
....
assim vc manda agrupar pelo campo faixa logo ele te retorna o total de cada faixa do jeito que vc quer.
Caso vc consiga pelo SQL sem adicionar este campo poste aqui depois!
flw!
03:10:05 - faixa 3
03:50:14 - faixa 3
04:24:45 - faixa 4
....
assim vc manda agrupar pelo campo faixa logo ele te retorna o total de cada faixa do jeito que vc quer.
Caso vc consiga pelo SQL sem adicionar este campo poste aqui depois!
flw!
GOSTEI 0
Joaoshi
02/01/2007
Colega, tente assim:
SELECT CampoHora FROM SuaTabela
WHERE CampoHora between ´08:00´ AND ´10:00´
ORDER BY CampoHora
Espero ter ajudado.
SELECT CampoHora FROM SuaTabela
WHERE CampoHora between ´08:00´ AND ´10:00´
ORDER BY CampoHora
Espero ter ajudado.
GOSTEI 0
Patrick Domingos
02/01/2007
Olá, tive o mesmo problema meu caro, e resolvi apenas sendo curioso e alterando o comando padrão SELECT CONVERT(VARCHAR(11), 'SEU CAMPO DE DATE_TIME' ,114) FROM 'SUA TABELA'.
Esse comando exibe apenas a parte "time" de um campo Date_time no seguinte formato hh:mm:ss:mm. Note que o primeiro parâmetro do CONVERT é a cadeia de caracteres de retorno, que no caso do padrão recebe o valor 11.
Se colocarmos "2" ao invés de "11" obteremos somente as horas(hh) do valor de retorno. Daí você pode trabalhar como quiser, agrupando os dados por faixa horária, fazendo PIVOT com o resultado, enfim... a gama de opções é grande.
Espero ter ajudado amigo.
Esse comando exibe apenas a parte "time" de um campo Date_time no seguinte formato hh:mm:ss:mm. Note que o primeiro parâmetro do CONVERT é a cadeia de caracteres de retorno, que no caso do padrão recebe o valor 11.
Se colocarmos "2" ao invés de "11" obteremos somente as horas(hh) do valor de retorno. Daí você pode trabalhar como quiser, agrupando os dados por faixa horária, fazendo PIVOT com o resultado, enfim... a gama de opções é grande.
Espero ter ajudado amigo.
GOSTEI 0
Wekslei Silva
02/01/2007
Em MySql:
SELECT CASE
WHEN a.hora BETWEEN '08:00:00' AND '08:59:59' THEN '08:00:00'
WHEN a.hora BETWEEN '09:00:00' AND '09:59:59' THEN '09:00:00'
WHEN a.hora BETWEEN '10:00:00' AND '10:59:59' THEN '10:00:00'
ELSE 'Sem registro'
END AS 'Intervalo', COUNT(*) AS 'Registro',
FROM suatabela a
WHERE a.hora BETWEEN (:hora1) AND (:hora2)
GROUP BY CASE
WHEN a.hora BETWEEN '08:00:00' AND '08:59:59' THEN '08:00:00'
WHEN a.hora BETWEEN '09:00:00' AND '09:59:59' THEN '09:00:00'
WHEN a.hora BETWEEN '10:00:00' AND '10:59:59' THEN '10:00:00'
ELSE 'Sem registro'
END
SELECT CASE
WHEN a.hora BETWEEN '08:00:00' AND '08:59:59' THEN '08:00:00'
WHEN a.hora BETWEEN '09:00:00' AND '09:59:59' THEN '09:00:00'
WHEN a.hora BETWEEN '10:00:00' AND '10:59:59' THEN '10:00:00'
ELSE 'Sem registro'
END AS 'Intervalo', COUNT(*) AS 'Registro',
FROM suatabela a
WHERE a.hora BETWEEN (:hora1) AND (:hora2)
GROUP BY CASE
WHEN a.hora BETWEEN '08:00:00' AND '08:59:59' THEN '08:00:00'
WHEN a.hora BETWEEN '09:00:00' AND '09:59:59' THEN '09:00:00'
WHEN a.hora BETWEEN '10:00:00' AND '10:59:59' THEN '10:00:00'
ELSE 'Sem registro'
END
GOSTEI 0