none
Intervalo de Datas RRS feed

  • Pergunta

  •  

    E ae Pessoal, estou com um problema que parece ser fácil mas não consegui resolver.

     

    Tenho uma tabela que tem ID, Preco,Data,Hora

     

    Preciso fazer um select q liste todos os preços entre 14/01/2008 15:00:00 até 15/01/2008 19:00:00

     

    Só que se eu fizer assim, ele vai listar os preços do dia 14 das 15:00 até as 19:00 e do dia 15 das 15:00 até as 19:00.

     

    Select Preco,Data,hora from TB_Trades_Feed 
     where id_Ativo = 1 and (Data >='20080114' and Hora >= '15:00:00') and
    (Data <='20080115' and Hora <= '19:00:00')
    order by Data, Hora

     

     

    Alguem tem uma dica?

    Valew

    quinta-feira, 17 de janeiro de 2008 11:42

Respostas

  • PDH,

     

    Então você vai ter que concatenar estes campos para poder fazer a pesquisa de datas!!!

    quinta-feira, 17 de janeiro de 2008 11:59
  • Assim melhorou.

     

    Select max(Preco) From
    (
    Select Preco, convert (datetime,Data + ' ' + hora) as Data_hora from TB_Trades_Feed
    where id_Ativo = 1 and Data >= '20080114' and Data <='20080115'
    ) A
    Where Data_hora >='20080114 15:00:00' and  Data_hora <='20080115 19:00:00'

    Valew Smile

    quinta-feira, 17 de janeiro de 2008 12:19

Todas as Respostas

  • Boas..
    Se for num SP

    Select Preco,Data,hora from TB_Trades_Feed 
     where id_Ativo = 1 and (Data BETWEEN @DataHora1 AND @DataHora2)
    order by Data, Hora


    Porque não guardas os dados data e hora no mesmo campo?

    quinta-feira, 17 de janeiro de 2008 11:45
  • PDH,

     

    Estes campos data e hora, são campos separados?

     

    Que tipo de datatype você esta utilizando para estes campos?

    quinta-feira, 17 de janeiro de 2008 11:52
  • Jr,

     

    Eles são campos separados msm, estou usando char(8) para cada um.

     

    Valew

     

    quinta-feira, 17 de janeiro de 2008 11:56
  • PDH,

     

    Então você vai ter que concatenar estes campos para poder fazer a pesquisa de datas!!!

    quinta-feira, 17 de janeiro de 2008 11:59
  • Assim funcionou mas perdeu um pouco de performance Sad

     

    Select max(Preco),Id_Ativo From
    (
    Select Preco,Id_Ativo, convert (datetime,Data + ' ' + hora) as Data_hora from TB_Trades_Feed
    where id_Ativo = 1
    ) A
     Where Data_hora >='20080114 15:00:00' and  Data_hora <='20080115 19:00:00'
    group by Id_Ativo

    Alguma sugestão?

    quinta-feira, 17 de janeiro de 2008 12:06
  • Na minha opinião o ideal seria ter um campo smalldatetime em guardaria os 2 dados..
    quinta-feira, 17 de janeiro de 2008 12:11
  • Assim melhorou.

     

    Select max(Preco) From
    (
    Select Preco, convert (datetime,Data + ' ' + hora) as Data_hora from TB_Trades_Feed
    where id_Ativo = 1 and Data >= '20080114' and Data <='20080115'
    ) A
    Where Data_hora >='20080114 15:00:00' and  Data_hora <='20080115 19:00:00'

    Valew Smile

    quinta-feira, 17 de janeiro de 2008 12:19