Pular para o conteúdo
  • Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 16 anos atrás por Avatar photoLeonardo Litz.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #84788
    Tiago_BB
    Participante

      Ola pessoal… estou com um problema de concatenação no a oracle…

      Segue o trecho da query com problema:

      SUBSTR(CAST(‘20010308’ AS VARCHAR(08)),1,4) || RPAD(‘0’ || SUBSTR(CAST(‘20010308’ AS VARCHAR(08)), 5,2) -1, 2) || ’10’

      Não esta trazendo a data que quero… caso eu entre com a data ‘20010308’ … preciso que ele subtraia 1 dia do mês e me retorne ‘20010210’, porém esta dando erro nessa parte:

      RPAD(‘0’ || SUBSTR(CAST(‘20010308’ AS VARCHAR(08)), 5,2) -1, 2)

      Pois esta retornando 20012 08

      Alguém pode me ajudar?

      Atenciosamente,
      Tiago

      #84792
      Avatar photoLeonardo Litz
      Participante

        Thiago dessa forma vc esta subtraindo um mes e não um dia.

        20010308 para 20010210
        ou seja
        08/03/2001 para 10/02/2001

        faca o seguinte

        select substr(to_char(to_date(20010308,’yyyymmdd’) – 1,’yyyymmdd’),1,6)||10
        from dual

        Vlw Leonardo Litz

        #84793
        Tiago_BB
        Participante

          mais eu quero subtrair um mês mesmo..

          Ja resolvi…

          O RPAD espera 3 parâmetros…

          Eu estava fazendo dessa forma:

          RPAD(‘0’ || SUBSTR(CAST(‘20010308′ AS VARCHAR(08)), 5,2) -1, 2) || ’10’

          E o correto é:

          RPAD(‘0’, SUBSTR(CAST(‘20010308′ AS VARCHAR(08)), 5,2) -1, 2) || ’10’

          Obrigado pelo interesse.

          Atte

          #84794
          Marcio68Almeida
          Participante

            Você quer subtrair um mês ?
            Quando o mês for janeiro, como ficará ???

            #84795
            Tiago_BB
            Participante

              Não pemsei a respeito.. pois no meu caso quando o mês for janeiro, eu subtraio o ano e fixo ‘1210’… pois é uma regra de negócio da empresa!!!

              #84800
              Avatar photoLeonardo Litz
              Participante

                Ai vc pode usar assim:

                select substr(to_char(add_months(to_date(20010308,’yyyymmdd’), – 1),’yyyymmdd’),1,6)||10
                from dual

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