Boa tarde, senhores.
Bem, talvez eu estivesse no tópico ou forum errado, porém mesmo assim, se ainda qualquer um que tenha passado pelo mesmo problema, talvez possa me ajudar.
Tenho um sql, que através do qual obtenho 90% da lógica da minha aplicação (sei que não é a melhor maneira, mas isso já estava feito no meu trabalho, então, não vejo como mudar). Existem ao executá-lo uma série de erros, onde, dentre as principais, a conversão:
UPDATE gpo.entregas
set pz_etga = dt_fim - dt_altd ,
dias_dec_etga = CURRENT_DATE - dt_altd,
dias_tot_prev_cumpr =
case when pc_etga <> 0
then
cast (((CURRENT_DATE - dt_altd) * 100) / pc_etga as integer)
else
(CURRENT_DATE - dt_altd)
end,
dt_prev_cumpr =
case when pc_etga <> 0
then
dt_altd + cast (((CURRENT_DATE - dt_altd) * 100)/pc_etga as integer)
else
dt_altd + (CURRENT_DATE - dt_altd)
end,
vlr_regua_etga =
case when pc_etga <> 0
then
dt_altd + cast(((CURRENT_DATE - dt_altd) * 100)/pc_etga as integer) / (dt_fim - dt_altd) *100
else
dt_altd + cast(CURRENT_DATE - dt_altd as integer) / (dt_fim - dt_altd) * 100
end,
gap_etga = (8 - (8 * pc_etga/100))
O meu problema está aqui:
vlr_regua_etga =
case when pc_etga <> 0
then
dt_altd + cast(((CURRENT_DATE - dt_altd) * 100)/pc_etga as integer) / (dt_fim - dt_altd) *100
else
dt_altd + cast(CURRENT_DATE - dt_altd as integer) / (dt_fim - dt_altd) * 100
end,
gap_etga = (8 - (8 * pc_etga/100))
no PostGreSQL, tenho esta excessão:
[code]ERRO: coluna "vlr_regua_etga" é do tipo double precision mas expressão é do tipo date
LINHA 20: vlr_regua_etga =
^
DICA: Você precisará reescrever ou converter a expressão.
********** Erro **********
ERRO: coluna "vlr_regua_etga" é do tipo double precision mas expressão é do tipo date
SQL state: 42804
Dica: Você precisará reescrever ou converter a expressão.
Caracter: 482[/code]