- Este tópico contém 10 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 10 meses atrás por
abonacin.
-
AutorPosts
-
30 de abril de 2009 às 5:59 pm #86537
VINI85
ParticipanteBom dia a todos, preciso fazer um Select onde pegue a data de admissão com a data de hoje e traga a diferença.
EX: data de admissão 01/03/2008
data de hoje 30/04/2009Apresentação : 1 ano e 2 meses.
Abraços.
30 de abril de 2009 às 6:24 pm #86538Marcio68Almeida
Participanteselect TRUNC ((to_date ('21/05/2009') - to_date ('21/01/2008')) / 365) ano, TRUNC (MOD ((to_date ('19/05/2009') - to_date ('21/01/2008')), 365) / 30) mes
from dual
Veja se isto serve…30 de abril de 2009 às 6:36 pm #86539VINI85
Participante[quote=”Marcio68Almeida”:1fbcfifz]
select TRUNC ((to_date ('21/05/2009') - to_date ('21/01/2008')) / 365) ano, TRUNC (MOD ((to_date ('19/05/2009') - to_date ('21/01/2008')), 365) / 30) mes
from dual
Veja se isto serve…[/quote]NÃO RODOU!!!
30 de abril de 2009 às 7:02 pm #86540Ishii
ParticipanteOlá,
Tente o months_between, mas será necessário uma função para a resposta sair neste formato…
select months_between (data_demissao, data_admissao) from dualIsso traz o resultado em meses, para passar para o formato de X anos e Y meses só com uma função…
[]s Ishii
30 de abril de 2009 às 7:03 pm #86541Regis Araujo
ParticipanteFala Vini, bom dia!
Não rolou o que o Marcio passou? Estranho.. Como que vc rodou este select? Alterou os valores de DATA pelo seu campo?
Posta aqui o seu select…
Abraços…
30 de abril de 2009 às 7:04 pm #86542Marcio68Almeida
Participante[quote=”VINI85″:2dn191sz]NÃO RODOU!!![/quote]
Que erro deu ???
Aqui rodou direitinho…
é claro que é estimativa, não é 100% preciso…30 de abril de 2009 às 7:07 pm #86543Ishii
ParticipanteOlá
Ou se puder ser em duas colunas
select trunc(months_between(data_demissao, data_admissao)/12) anos ,mod(months_between(data_demissao, data_admissao),12) meses from dual[]s Ishii
30 de abril de 2009 às 8:05 pm #86544VINI85
Participante[quote=”Thunder_Catz”:2qzi91x8]Fala Vini, bom dia!
Não rolou o que o Marcio passou? Estranho.. Como que vc rodou este select? Alterou os valores de DATA pelo seu campo?
Posta aqui o seu select…
Abraços…[/quote]
Então eu fiz desta forma:
select TRUNC ((to_date (‘SYSDATE’) – to_date (‘PFUNC.DATAADMISSAO’)) / 365) ano, TRUNC (MOD ((to_date (‘SYSDATE’) – to_date (‘PFUNC.DATAADMISSAO’)), 365) / 30) mes
from PFUNC30 de abril de 2009 às 8:30 pm #86545Marcio68Almeida
Participante[quote=”VINI85″:j29cy2kh]Então eu fiz desta forma:
select TRUNC ((to_date (‘SYSDATE’) – to_date (‘PFUNC.DATAADMISSAO’)) / 365) ano, TRUNC (MOD ((to_date (‘SYSDATE’) – to_date (‘PFUNC.DATAADMISSAO’)), 365) / 30) mes
from PFUNC[/quote]
A coluna dataadmissao é data ?
Se for data não pode utilizar o conversor TO_DATE…
Qual o erro que está aparecendo para você ???30 de abril de 2009 às 8:34 pm #86546VINI85
Participante[quote=”Ishii”:170j9lu0]Olá
Ou se puder ser em duas colunas
select trunc(months_between(data_demissao, data_admissao)/12) anos ,mod(months_between(data_demissao, data_admissao),12) meses from dual[]s Ishii[/quote]
GALERA CONSEGUI, VALEU…
O CÓDIGO FICOU ASSIM
select trunc(months_between(SYSDATE, PFUNC.DATAADMISSAO)/12) anos
,TRUNC(mod(months_between(SYSDATE, PFUNC.DATAADMISSAO),12)) mesesfrom PFUNC
OBRIGADO A TODOS….
4 de maio de 2009 às 7:10 pm #86553abonacin
ParticipanteNão deve ter rodado por falta da máscara na data…
tenta substituir por to_date (’21/05/2009′,’dd/mm/rrrr’) -
AutorPosts
- Você deve fazer login para responder a este tópico.