Thread: calulating with money type impossible ?

calulating with money type impossible ?

From
De Moudt Walter
Date:
Hi,

This is kind of a repost, because i didn't get any answers on it last
time :-(

Trying to find a way to calculate with the money-type. The kind of :

select (sales_price/transport_costs) as trans_rate from account_details;

to get the ratio of to amounts of money. The result should be a float!

Well, it doesn't seem possible.
In pg_proc table i found 2 procedures possibly usable for money
conversion:
cash_out(): takes one money argument, delivers a int4
cash_in() : takes one argument (don't know what kind) and delivers a
money-type.

Here's what i got with it :

bookbiz=> select cash_in(20);
pqReadData() -- backend closed the channel unexpectedly.
This probably means the backend terminated abnormally
before or while processing the request.
We have lost the connection to the backend, so further processing is
impossible.  Terminating.
\* so i reconnect \*
[walter@localhost walter]$ psql bookbiz

bookbiz=> select cash_out('$25.00');
 cash_out
---------
136509096
(1 row)
bookbiz=> select cash_out('$25.00');
cash_out
---------
136508128
(1 row)
bookbiz=>
(2 different results for the same argument)
So cash_in kicks me out, an cash_out just delivers nonsens.

I'm using postgresql server version 6.5.2.1
and client 6.5.1.2, RPM-versions on RedHat 6.0.

Has any-one done better with money (on postgres) ?
Please let me know, if it isn't possible as well.. then i just
change my money-fields to floats

Thanks

De Moudt Walter.

Re: [SQL] calulating with money type impossible ?

From
Peter Eisentraut
Date:
The money type is deprecated in favour of the NUMERIC(9,2) (or whatever)
type. There indeed aren't a lot of functions and operators for money, and
no one is going to implement them now. In fact, type money might disappear
soon!

    -Peter

On 1999-11-05, De Moudt Walter mentioned:

> Hi,
>
> This is kind of a repost, because i didn't get any answers on it last
> time :-(
>
> Trying to find a way to calculate with the money-type. The kind of :
>
> select (sales_price/transport_costs) as trans_rate from account_details;
>
> to get the ratio of to amounts of money. The result should be a float!
>
> Well, it doesn't seem possible.
> In pg_proc table i found 2 procedures possibly usable for money
> conversion:
> cash_out(): takes one money argument, delivers a int4
> cash_in() : takes one argument (don't know what kind) and delivers a
> money-type.
>
> Here's what i got with it :
>
> bookbiz=> select cash_in(20);
> pqReadData() -- backend closed the channel unexpectedly.
> This probably means the backend terminated abnormally
> before or while processing the request.
> We have lost the connection to the backend, so further processing is
> impossible.  Terminating.
> \* so i reconnect \*
> [walter@localhost walter]$ psql bookbiz
>
> bookbiz=> select cash_out('$25.00');
>  cash_out
> ---------
> 136509096
> (1 row)
> bookbiz=> select cash_out('$25.00');
> cash_out
> ---------
> 136508128
> (1 row)
> bookbiz=>
> (2 different results for the same argument)
> So cash_in kicks me out, an cash_out just delivers nonsens.
>
> I'm using postgresql server version 6.5.2.1
> and client 6.5.1.2, RPM-versions on RedHat 6.0.
>
> Has any-one done better with money (on postgres) ?
> Please let me know, if it isn't possible as well.. then i just
> change my money-fields to floats
>
> Thanks
>
> De Moudt Walter.
>
> ************
>
>

--
Peter Eisentraut                  Sernanders vaeg 10:115
peter_e@gmx.net                   75262 Uppsala
http://yi.org/peter-e/            Sweden