- Este tópico contém 8 respostas, 5 vozes e foi atualizado pela última vez 17 anos, 2 meses atrás por
Marcio68Almeida.
-
AutorPosts
-
12 de janeiro de 2009 às 10:44 pm #84661
Tiago_BB
ParticipanteOla 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,
Tiago12 de janeiro de 2009 às 11:05 pm #84662Ishii
ParticipanteOlá,
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
12 de janeiro de 2009 às 11:06 pm #84663Manoel872
Participanteadd_months(TO_DATE(20090112, ‘yyyymmdd’),-1)
Tenta assim!
Att,
Maneol jr
12 de janeiro de 2009 às 11:10 pm #84664Tiago_BB
ParticipanteTentei 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
12 de janeiro de 2009 às 11:42 pm #84665Regis Araujo
ParticipanteTiago, 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/2008Abraços…
13 de janeiro de 2009 às 2:29 pm #84677Tiago_BB
ParticipanteOcorre o mesmo erro!!!
‘TO_DATE’ is not a recognized built-in function name.
😕
13 de janeiro de 2009 às 3:20 pm #84678Marcio68Almeida
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…13 de janeiro de 2009 às 7:50 pm #84686Tiago_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??
13 de janeiro de 2009 às 9:32 pm #84696Marcio68Almeida
Participantepercebi 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
-
AutorPosts
- Você deve fazer login para responder a este tópico.