none
BETWEEN COM DATA EM FORMATO INT RRS feed

  • Pergunta

  • Bom dia!!

    Estou fazendo uma tela que tem um parâmetro De, Até.

    O formato que chega na minha Procedure é INT, 

    A minha duvida, eu queria criar um parametro na minha consulta que tras, por exemplo, todas as Ordens de Serviço De uma data x até uma data y,

    Só que preciso fazer que o meu X e o meu Y, sejam em inteiros. e que o horário de "De" sempre seja 00:00.000 e o "Até" Sempre seja 23:59.000

    Eu estava vendo alguns exemplos e consegui encontrar o parametro usado no "De" que seria mais ou menos assim:

    WHERE

    (TB_SERVICE_ORDER.DATA  >= @BEGINDATA AND TB_SERVICE_ORDER.DATA < @BEGINDATA + 86400)

    Agora preciso do "Até"

    Obrigado!! 

    sexta-feira, 18 de maio de 2012 13:13

Respostas

  • Tenta usar dessa forma:

    --Between datas
    AND TB_SERVICE_ORDER.DATA >= Convert(Varchar(20), @BEGINDATA, 103) 
    AND TB_SERVICE_ORDER_DATA < Convert(Varchar(20), @ENDDATA + 1, 103) 
    --Between horários
    AND Convert(VARCHAR, TB_SERVICE_ORDER_DATA, 108) >= '00:00'
    AND Convert(VARCHAR, TB_SERVICE_ORDER_DATA, 108) <  '23:59'

    Abraços!


    thiagokoelho



    sexta-feira, 18 de maio de 2012 13:32
  • Entendi, eu fiz do modo que você disse, mas quando faço a consulta, não me mostra nenhuma OS.

    Bom, eu estava vendo aqui, e o numero que chega na minha proc é int,

    Funcionou de uma forma legal aqui, vou deixar como eu usei, mas mesmo assim, valeu Thiago!! 

    AND ( TB_OS.DATA  >= BEGINDATA
    AND TB_OS.DATA < ENDDATA + 86400)


    • Marcado como Resposta JoojiCorrea sexta-feira, 18 de maio de 2012 14:38
    sexta-feira, 18 de maio de 2012 14:38

Todas as Respostas

  • Tenta usar dessa forma:

    --Between datas
    AND TB_SERVICE_ORDER.DATA >= Convert(Varchar(20), @BEGINDATA, 103) 
    AND TB_SERVICE_ORDER_DATA < Convert(Varchar(20), @ENDDATA + 1, 103) 
    --Between horários
    AND Convert(VARCHAR, TB_SERVICE_ORDER_DATA, 108) >= '00:00'
    AND Convert(VARCHAR, TB_SERVICE_ORDER_DATA, 108) <  '23:59'

    Abraços!


    thiagokoelho



    sexta-feira, 18 de maio de 2012 13:32
  • Bom, não funcionou.

    mas cara eu estava olhando.

    Tem como você comparar Varchar?

    Tipo:  data  >= '00:00'

    não teria que mostrar a data em inteiro?


    • Editado JoojiCorrea sexta-feira, 18 de maio de 2012 13:54
    sexta-feira, 18 de maio de 2012 13:53
  • Só se você converter a data para VARCHAR, como eu mostrei acima, fiz isso e tenho funcionando em operação em um cliente que queria tirar relatórios por períodos de datas e somente a das 6:00 ao 12:00 por exemplo.

    thiagokoelho

    sexta-feira, 18 de maio de 2012 14:21
  • Entendi, eu fiz do modo que você disse, mas quando faço a consulta, não me mostra nenhuma OS.

    Bom, eu estava vendo aqui, e o numero que chega na minha proc é int,

    Funcionou de uma forma legal aqui, vou deixar como eu usei, mas mesmo assim, valeu Thiago!! 

    AND ( TB_OS.DATA  >= BEGINDATA
    AND TB_OS.DATA < ENDDATA + 86400)


    • Marcado como Resposta JoojiCorrea sexta-feira, 18 de maio de 2012 14:38
    sexta-feira, 18 de maio de 2012 14:38