У меня есть таблица Ingres со следующими столбцами
from_date ingresdate
to_date ingresdate
model_amt money
Даты могут отражать период любого количества дней, а model_amt всегда является недельным значением. Мне нужно отработать итоговую модель_амт за период
Для этого мне нужно знать, сколько дней покрывается периодом, а затем разделить model_amt на 7 и умножить его на количество дней
однако я получаю неправильные результаты, используя код ниже
select model_amt, date_part('day',b.to_date - b.from_date),
model_amt / 7 * int4( (date_part('day',b.to_date - b.from_date)) )
from table
Например, где model_amt = 88,82 и период составляет 2 недели, я получаю следующий вывод
+-------------------------------------------------------+
¦model_amt ¦col2 ¦col3 ¦
+--------------------+-------------+--------------------¦
¦ #88.82¦ 14¦ #177.66¦
+-------------------------------------------------------+
Но 88,82 / 7 * 14 = 177,64, а не 177,66?
Есть идеи, что происходит? Та же проблема возникает независимо от того, включаю ли я функцию int4 вокруг date_part.
* Обновление 15:28 *
Решением было добавить функцию float8 вокруг model_amt
float8(model_amt)/ 7 * interval('days', to_date - from_date)
Спасибо за ответы.