Pular para o conteúdo
  • Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 18 anos, 7 meses atrás por mangueboyrp.
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #80169
    Jota
    Participante

      Sou novo, e desculpem por não me apresentar direito
      mas estou meio desesperado.

      Na empresa onde trabalho, usamos tanto com Oracle quanto com SQLServer

      Meu dilema é o seguinte,
      Em SQL ele está buscando corretamente os dados

      Ja em Oracle ao fazer a busca ele retorna numero negativo

      E como se trata de tempo, não pode ser possível que exista tempo negativo, e mais, ambos os bancos contem os mesmos dados.

      Engraçado que quando faço uma busca com uma data antes de 22/05/2007 ele retorna o número corretamente, após essa data ele trás número negativo.

      Suponho que ele esteja estourando o campo e não suporta o valor, logo ele deve fazer alguma coisa internamente e retornar um número negativo para compensar.

      Gostaria de saber se é isso mesmo, e se possível me sugerirem alguma solução para isso.

      Obrigado.[/quote]

      #80171
      mangueboyrp
      Participante

        Vc pode postar o select que vc faz no SQL SERVER, tendo em vista que vc está dizendo que o mesmo está trazendo as informações corretas?.

        #80176
        Jota
        Participante

          [quote=SQL]
          SELECT
          SUM(DATEDIFF(SS, A.SHIFTDTSTART, A.SHIFTDTEND)) AS TOTALELAPTIME

          FROM
          VWRESOURCESTATUSEV A INNER JOIN TBLRESOURCESTATUS B WITH ( NOLOCK ) ON A.IDRESOURCESTATUS = B.IDRESOURCESTATUS
          LEFT JOIN TBLRESOURCESTATUS J WITH ( NOLOCK ) ON J.IDRESOURCESTATUS = A.IDRESOURCESTATUS
          LEFT JOIN TBLRESOURCE E WITH ( NOLOCK ) ON E.IDRESOURCE = A.IDRESOURCE
          WHERE
          A.IDPLANT = 1 AND A.IDAREA = 12 AND A.IDSECTOR = 107 AND A.DTPROD = ‘2007-05-21’
          AND A.DTPROD BETWEEN ‘2007-05-01’ AND ‘2007-05-22’
          AND A.FLGVIRTUALREG = 0
          [/quote]

          [quote=Oracle]
          SELECT
          SUM(PCFDATEDIFF( A.SHIFTDTSTART, A.SHIFTDTEND )) AS TOTALELAPTIME

          FROM
          VWRESOURCESTATUSEV A INNER JOIN TBLRESOURCESTATUS B ON A.IDRESOURCESTATUS = B.IDRESOURCESTATUS
          LEFT JOIN TBLRESOURCESTATUS J ON J.IDRESOURCESTATUS = A.IDRESOURCESTATUS
          LEFT JOIN TBLRESOURCE E ON E.IDRESOURCE = A.IDRESOURCE
          WHERE
          A.IDPLANT = 1 AND A.IDAREA = 12 AND A.IDSECTOR = 107 AND A.DTPROD = TO_DATE(‘2007-05-21’, ‘YYYY-MM-DD’)
          AND A.DTPROD BETWEEN ’01-05-2007′ AND ’22-05-2007′
          AND A.FLGVIRTUALREG = 0
          [/quote]
          Essa função PCFDATEDIFF foi criada internamente na empresa para fazer a diferença entre as datas e converter para segundos

          #80185
          mangueboyrp
          Participante

            Boa Tarde, Amigo.
            Tente fazer desse jeito para ver se dá certo:

            [quote=Oracle]
            SELECT
            SUM(TO_NUMBER(TO_CHAR(A.SHIFTDTSTART,’SSSSS’)) – TO_NUMBER(TO_CHAR(A.SHIFTDTEND,’SSSSS’)))AS TOTALELAPTIME

            FROM
            VWRESOURCESTATUSEV A INNER JOIN TBLRESOURCESTATUS B ON A.IDRESOURCESTATUS = B.IDRESOURCESTATUS
            LEFT JOIN TBLRESOURCESTATUS J ON J.IDRESOURCESTATUS = A.IDRESOURCESTATUS
            LEFT JOIN TBLRESOURCE E ON E.IDRESOURCE = A.IDRESOURCE
            WHERE
            A.IDPLANT = 1 AND A.IDAREA = 12 AND A.IDSECTOR = 107 AND A.DTPROD = TO_DATE(‘2007-05-21’, ‘YYYY-MM-DD’)
            AND A.DTPROD BETWEEN ’01-05-2007′ AND ’22-05-2007′
            AND A.FLGVIRTUALREG = 0
            [/quote]

          Visualizando 4 posts - 1 até 4 (de 4 do total)
          • Você deve fazer login para responder a este tópico.