Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Ola, gostaria de saber como fazer calculo de tempo de ano e mês ? eu tenho os campos ano, mês e anomes da admissão e ano, mês e anomes da demissão , como eu faço calculo para a resposta vim em meses ?
Gustavo,
Calcule a diferença de datas, isto vai te dar a diferença em dias, e divida por 30.5 para calcular um médio de meses. Como você tem os campos separados, você tem que construir uma data para o calculo funcionar.
ceil((makedate(Ano_Adm,Mes_Adm,1)-makedate(Ano_Dem,Mes_Dem,1)) / 30.5)
O ceil arredonda para o próximo inteiro, isto é: se o resultado for 2.2 então a função retorna 3.
caso queira arredondar 'para baixo" use o floor.
Boa tarde.
Use a função interval:
Intervalo
interval( expressão [ , código de formato ])
A função interval formata a expressão como um intervalo de tempo, de acordo com o caracter fornecido como código de formato. Se o código de formato for omitido, será utilizado o formato de hora definido no sistema operacional. Os intervalos podem ser formatados como hora, dia ou como uma combinação de dias, horas, minutos, segundos e frações de segundos.
Exemplos:
Os exemplos abaixo supõem as seguintes configurações do sistema operacional:
Formato de data abreviada:
YY-MM-DD
Formato de hora:
hh:mm:ss
Separador de número decimal:
.
interval( A ) em que A=0.375 retorna:
Caracter
09:00:00
Número
0.375
interval( A ) em que A=1.375 retorna:
Caracter
33:00:00
Número
1.375
interval( A, 'D hh:mm' ) em que A=1.375 retorna:
Caracter
1 09:00
Número
1.375
interval( A-B, 'D hh:mm' ) em que A=97-08-06 09:00:00 e B=96-08-06 00:00:00 retorna:
Caracter
365 09:00
Número
365.375
Gustavo,
Calcule a diferença de datas, isto vai te dar a diferença em dias, e divida por 30.5 para calcular um médio de meses. Como você tem os campos separados, você tem que construir uma data para o calculo funcionar.
ceil((makedate(Ano_Adm,Mes_Adm,1)-makedate(Ano_Dem,Mes_Dem,1)) / 30.5)
O ceil arredonda para o próximo inteiro, isto é: se o resultado for 2.2 então a função retorna 3.
caso queira arredondar 'para baixo" use o floor.
Não tinha visto a resposta do Luciano ainda, mas está valendo também.
interval(makedate(Ano_Adm,Mes_Adm,1)-makedate(Ano_Dem,Mes_Dem,1),'MM')
Ola Vasconcelos, tudo bem ?
Obrigado pela resposta, eu estou em um nível intermediário de programação e não entendi a sua sugestão acima.
Em anexo segue uma planilha extraída do qlik view com os registros para calculo. Caso for melhor também possua o campo Mês/Ano.
É possivel com a planilha desenvolver um exemplo?
Gustavo,
Você não tem as colunas de data de admissão e data de demissão na sua aplicação ? Com os campos data (dia/mes/ano) é mais fácil fazer estas operações de tempo.
Ola, Pablo eu tenho os campos sim, eu saparei eles em dia, mês e ano, tanto para admissão para demissão.