2
respostas

[Dúvida] Dúvida

Boa tarde,

Gostaria de uma ajuda para resolver uma questão. Preciso fazer multiplicação de campo data por um campo numero Acabei tentando dessa forma:

to_char(RECD_DATVENC_1,'ddmmyyyyy') * to_char(RECD_VALDUPL_1,'999999D99') TESTE

Só que valores de resultado não batem com os que tenho em planilhas no Excel.

Se puderem me ajudar fico grato.

2 respostas

O Oracle não permite que você multiplique diretamente um campo de data com um campo numérico, pois eles são tipos de dados diferentes. No entanto você realmente pode converter o campo data para texto, porém é necessário transforma-lo em um número tambem, dessa forma utilizamos o comando TO_NUMBER().

No seu exemplo, o comando ficaria assim:

SELECT TO_NUMBER(TO_CHAR(RECD_DATVENC_1, 'DDMMYYYY')) * RECD_VALDUPL_1 AS CALCULO
  FROM DUAL

A função TO_CHAR() converte a data em string, e a função TO_NUMBER() converte esta string em um número que pode ser multiplicado pelo campo RECD_VALDUPL_1. Agora, se você deseja multiplicar um valor especifico da data, tipo o dia, mês ou ano, pode utilizar a função EXTRACT() da seguinte forma:

SELECT EXTRACT(DAY FROM RECD_DATVENC_1) AS DIA,
              EXTRACT(MONTH FROM RECD_DATVENC_1) AS MES,
              EXTRACT(YEAR FROM RECD_DATVENC_1) AS ANO
  FROM DUAL

Dessa forma, você obtem os valores individuais como númericos, que podem ser multiplicado pelo campo RECD_VALDUPL_1 sem nenhum problema.

Obrigado Vinicius pela dica, vou testar aqui. Valeu!