Thread: Money

Money

From
Bill Sneed
Date:
I' m trying to perform some simple arithmetic with a field datatype,
money.

For example, select part_id, cost from parts;  gives the id and cost
in dollars...
         select part_id, cost+1.00 from parts; ....adds $1.00 to
displayed cost.
         select part_id, cost*2 from parts; produces an error message...
"There is no operator '*' for types money.....retype this query  using
an explicit cast or.....define the operator using CREATE OPERATOR."

If I examine the list of operators using \do,  there are any number of
them shown for *, money, int2, float4, etc.

Question 1:  Is this a list of existing oeprators or a list of
permitted ones that I have to create?

Question 2:  I can't figure out haw to use the CAST ::   ....Any
hints?

Again, TIA to one and all.

.......Bill Sneed....Prospect, Maine......


Re: [GENERAL] Money

From
Bob Dusek
Date:
Hey there,

I had some similar problems recently, try this

select someid, somemoneyfield * 2::float as product from table;

You cannot multiply money * money, apparently.  But, money * float seems
to work fine.  Same goes with division:

select someid, somemoneyfield / 2::float as quotient from table;

Hope this helps.


On Sat, 12 Dec 1998, Bill Sneed wrote:

> Date: Sat, 12 Dec 1998 22:09:19 +0000
> From: Bill Sneed <bsneed@mint.net>
> To: "pgsql-general@hub.org" <pgsql-general@hub.org>
> Subject: [GENERAL] Money
>
> I' m trying to perform some simple arithmetic with a field datatype,
> money.
>
> For example, select part_id, cost from parts;  gives the id and cost
> in dollars...
>          select part_id, cost+1.00 from parts; ....adds $1.00 to
> displayed cost.
>          select part_id, cost*2 from parts; produces an error message...
> "There is no operator '*' for types money.....retype this query  using
> an explicit cast or.....define the operator using CREATE OPERATOR."
>
> If I examine the list of operators using \do,  there are any number of
> them shown for *, money, int2, float4, etc.
>
> Question 1:  Is this a list of existing oeprators or a list of
> permitted ones that I have to create?
>
> Question 2:  I can't figure out haw to use the CAST ::   ....Any
> hints?
>
> Again, TIA to one and all.
>
> .......Bill Sneed....Prospect, Maine......
>
>
>


Re: [GENERAL] Money

From
Bill Sneed
Date:
Bob Dusek wrote:
>
> Hey there,
>
> I had some similar problems recently, try this
>
> select someid, somemoneyfield * 2::float as product from table;
>
> You cannot multiply money * money, apparently.  But, money * float seems
> to work fine.  Same goes with division:
>
> select someid, somemoneyfield / 2::float as quotient from table;
>
> Hope this helps.
>
>
Thanks Bob...to some extent it does...I was able to do ---
somemoneyfield *2::int2 or /2::int2 but got a complaint when trying a
floating point datatype....but if it works for you it must be me!  :-)

....TNX...Bill