From: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
---|---|
To: | Martijn van Oosterhout <kleptog(at)svana(dot)org> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgreSQL(dot)org> |
Subject: | Re: [GENERAL] A real currency type |
Date: | 2006-03-21 13:49:18 |
Message-ID: | 200603211349.k2LDnIR15871@candle.pha.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-hackers |
This looks very interesting. Should we add it to the core distribution?
---------------------------------------------------------------------------
Martijn van Oosterhout wrote:
-- Start of PGP signed section.
> For a while I've been wondering about making a type that was really a
> shell around a base type that tagged the type in some way. For example,
> associating a currency with a numeric and complaining about additions
> between mismatches.
>
> Well, I did it and it's available here:
> http://svana.org/kleptog/pgsql/taggedtypes.html
>
> Below some examples of it in action. Yes, that's a timestamp that
> remembers the timezone. Neat huh?
>
> Tested on 7.4 and a recent 8.1devel so it should work for most people.
> Installation reports welcome. Note, this is beta software, don't run it
> on your production server. Thanks.
>
> Have a nice day,
>
>
> test=# select '5.6 USD'::currency + '4.5 USD'::currency;;
> ?column?
> -----------
> 10.10 USD
> (1 row)
>
> test=# select '5.6 USD'::currency + '4.5 AUD'::currency;;
> ERROR: Using operator +(currency,currency) with incompatable tags (USD,AUD)
> test=# select c1, print_currency(c1) from c;
> c1 | print_currency
> ------------+----------------
> 232.44 USD | US$ 232.44
> 21.20 EUR | ? 21.20
> -13.44 AUD | AU$ -13.44
> 0.01 USD | US$ 0.01
> 14.00 AUD | AU$ 14.00
> (5 rows)
>
> test=# select 5.4*c1 from c where tag(c1) = 'AUD';
> ?column?
> ------------
> -72.58 AUD
> 75.60 AUD
> (2 rows)
>
> test=# select t, "timestamp"(t), date_part('hour',t) from c;
> t | timestamp | date_part
> -----------------------------------------+---------------------+-----------
> 2005-08-14 02:00:00+02 Europe/Amsterdam | 2005-08-14 02:00:00 | 2
> 2005-08-14 02:00:00+02 Australia/Sydney | 2005-08-14 10:00:00 | 10
> 2005-08-14 02:00:00+02 Asia/Hong_Kong | 2005-08-14 08:00:00 | 8
> 2005-08-14 02:00:00+02 America/New_York | 2005-08-13 20:00:00 | 20
> 2005-08-14 02:00:00+02 Asia/Kuwait | 2005-08-14 03:00:00 | 3
> (5 rows)
>
> --
> Martijn van Oosterhout <kleptog(at)svana(dot)org> http://svana.org/kleptog/
> > Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
> > tool for doing 5% of the work and then sitting around waiting for someone
> > else to do the other 95% so you can sue them.
-- End of PGP section, PGP failed!
--
Bruce Momjian http://candle.pha.pa.us
SRA OSS, Inc. http://www.sraoss.com
+ If your life is a hard drive, Christ can be your backup. +
From | Date | Subject | |
---|---|---|---|
Next Message | Merlin Moncure | 2006-03-21 13:54:36 | Re: What's a good default encoding? |
Previous Message | Rasmus Resen Amossen | 2006-03-21 13:48:09 | Using postgresql in a HA/load balancing environment? |
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Dunstan | 2006-03-21 14:02:48 | Re: 8.2 planning features |
Previous Message | Christian Mair | 2006-03-21 13:20:09 | Re: [Pgbuildfarm-members] guppie: 64MB RAM too small? |