Pular para o conteúdo
  • Este tópico contém 8 respostas, 5 vozes e foi atualizado pela última vez 17 anos, 2 meses atrás por Marcio68Almeida.
Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #84661
    Tiago_BB
    Participante

      Ola pessoal.

      Estou com um problema… tenho um campo em uma tabela no formato AAAAMMDD …

      Acontece que preciso pegar uma data qualquer e subtrair dessa data 1 mês… ou seja… caso eu entre com 12/12/08.. quero retornar 11/11/08.

      Alguma sugestão??

      Atenciosamente,
      Tiago

      #84662
      Ishii
      Participante

        Olá,

        Primeiro converta o dado da coluna caso esse não seja DATE mesmo.
        Segundo utilize o add_months para adicionar ou substrair meses:

        select add_months(to_date('12/12/08','DD/MM/YY'), -1) from dual;

        []s Ishii

        #84663
        Manoel872
        Participante

          add_months(TO_DATE(20090112, ‘yyyymmdd’),-1)

          Tenta assim!

          Att,

          Maneol jr

          #84664
          Tiago_BB
          Participante

            Tentei da seguinte forma:

            SELECT ADD_MONTHS(TO_DATE(‘20090112’, ‘yyyymmdd’),-1) FROM CALEND

            Mas ocorreu o seguinte erro no SQL:

            ‘TO_DATE’ is not a recognized built-in function name.

            O que pode ser?

            Atte

            #84665
            Avatar photoRegis Araujo
            Participante

              Tiago, boa tarde!

              Seguinte, no lugar que está escrito ‘20090112’ você deve colocar o campo de DATA da sua tabela…

              Ex.

              SELECT ADD_MONTHS(TO_DATE(C.DATACALENDARIO, ‘DD/MM/YY’),-1) DATA FROM CALEND C
              DATA
              12/12/2008

              Abraços…

              #84677
              Tiago_BB
              Participante

                Ocorre o mesmo erro!!!

                ‘TO_DATE’ is not a recognized built-in function name.

                😕

                #84678
                Marcio68Almeida
                Participante

                  [quote=”Tiago_BB”:3cz84jf0]Ocorre o mesmo erro!!!

                  ‘TO_DATE’ is not a recognized built-in function name.

                  😕 [/quote]

                  Qual o tipo de coluna que está usando ???
                  Mostre a descrição da tabela…

                  #84686
                  Tiago_BB
                  Participante

                    É do tipo numeric (5)

                    Esta no seguinte formato: 20090113.

                    tentei fazer o seguinte:

                    SELECT DATEADD(M, -1, ‘20090113’)

                    Ele subtrai o mes… porém… preciso subtrair o mes e 1 dia…

                    Como o usuario entrou com a data 20090113… quero que retorne 20081212 … nesta funcao ela retorna 20081213… como posso subtrair a data agora?

                    Posso usar a mesma função da seguinte forma:

                    SELECT DATEADD(d, -1, ‘20090113’)…

                    … Ele subtrai a data…

                    Tentei guardar o resultado do mes em um alias e jogar na funcao… da seguinte forma:

                    (SELECT TOP 1 DATA_CALEND
                    FROM CALEND
                    WHERE CENTRO_CUSTO_CALEND = 421
                    AND DATA_CALEND = ‘20090119’) THEN
                    (SELECT DATEADD(M, -1, ‘20090119’) MES)
                    (SELECT DATEADD(d, -1, MES))

                    mais nao consegui!!!

                    Alguma sugestao??

                    #84696
                    Marcio68Almeida
                    Participante

                      percebi que o seu problema era o tipo de dado, tente o seguinte :
                      select ADD_MONTHS (to_date (to_char (20090112), 'yyyymmdd'), 1) -1 from dual

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