Updated patch attached with both documentation portions --- applied.
---------------------------------------------------------------------------
Michael Glaesemann wrote:
> Please find attached a patch (diff -c against cvs HEAD) to add a
> function that accepts a double precision argument assumed to be a Unix
> epoch timestamp and returns timestamp with time zone, and accompanying
> documentation.
>
> Usage:
>
> test=# select to_timestamp(200120400);
> to_timestamp
> ------------------------
> 1976-05-05 14:00:00+09
> (1 row)
>
> If regression tests are required, I will produce some. I'd appreciate
> any pointers as to what to look for, as they would be my first attempt
> at writing regression tests.
>
> Regards
>
> Michael Glaesemann
> grzm myrealbox com
>
[ Attachment, skipping... ]
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
--
Bruce Momjian | http://candle.pha.pa.us
[email protected] | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
Index: doc/src/sgml/func.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/func.sgml,v
retrieving revision 1.252
diff -c -c -r1.252 func.sgml
*** doc/src/sgml/func.sgml 7 Jun 2005 07:08:34 -0000 1.252
--- doc/src/sgml/func.sgml 9 Jun 2005 16:33:38 -0000
***************
*** 4082,4087 ****
--- 4082,4094 ----
argument is the value to be formatted and the second argument is a
template that defines the output or input format.
</para>
+ <para>
+ The <function>to_timestamp</function> function can also take a single
+ <type>double precision</type> argument to convert from Unix epoch to
+ <type>timestamp with time zone</type>.
+ (<type>Integer</type> Unix epochs are implicitly cast to
+ <type>double precision</type>.)
+ </para>
<table id="functions-formatting-table">
<title>Formatting Functions</title>
***************
*** 4139,4144 ****
--- 4146,4157 ----
<entry><literal>to_timestamp('05 Dec 2000',
'DD Mon YYYY')</literal></entry>
</row>
<row>
+ <entry><literal><function>to_timestamp</function>(<type>double
precision</type>)</literal></entry>
+ <entry><type>timestamp with time zone</type></entry>
+ <entry>convert UNIX epoch to time stamp</entry>
+ <entry><literal>to_timestamp(200120400)</literal></entry>
+ </row>
+ <row>
<entry><literal><function>to_number</function>(<type>text</type>,
<type>text</type>)</literal></entry>
<entry><type>numeric</type></entry>
<entry>convert string to numeric</entry>
Index: src/include/catalog/pg_proc.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/catalog/pg_proc.h,v
retrieving revision 1.364
diff -c -c -r1.364 pg_proc.h
*** src/include/catalog/pg_proc.h 7 Jun 2005 07:08:34 -0000 1.364
--- src/include/catalog/pg_proc.h 9 Jun 2005 16:33:45 -0000
***************
*** 1459,1464 ****
--- 1459,1466 ----
DESCR("greater-than-or-equal");
DATA(insert OID = 1157 ( timestamptz_gt PGNSP PGUID 12 f f t f i 2 16
"1184 1184" _null_ _null_ _null_ timestamp_gt - _null_ ));
DESCR("greater-than");
+ DATA(insert OID = 1158 ( to_timestamp PGNSP PGUID 14 f f t f i 1
1184 "701" _null_ _null_ _null_ "select (\'epoch\'::timestamptz + $1 * \'1
second\'::interval)" - _null_ ));
+ DESCR("convert UNIX epoch to timestamptz");
DATA(insert OID = 1159 ( timezone PGNSP PGUID 12 f f t f i 2
1114 "25 1184" _null_ _null_ _null_ timestamptz_zone - _null_ ));
DESCR("adjust timestamp to new time zone");
---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faq