Porting from mysql to psql (UNIX_TIMESTAMP()?)
Hi!
As subject says, we are currently porting all of our data, programs
and logic from mysql to postgresql. One of the things we have yet to
resolve is how to replace mysql's UNIX_TIMESTAMP() function we used
extensively in PosgreSQL?
Function works like this in mysql:
mysql> select start from connection limit 1;
+---------------------+
| start |
+---------------------+
| 2000-07-03 20:12:37 |
+---------------------+
1 row in set (0.01 sec)
mysql> select UNIX_TIMESTAMP(start) from connection limit 1;
+-----------------------+
| UNIX_TIMESTAMP(start) |
+-----------------------+
| 962647957 |
+-----------------------+
1 row in set (0.00 sec)
Is there any similar functionality (returning unixish number of
seconds since 1970 from the timestamp field) in PostgreSQL?
I tried all of the available date/time functions, type casting but all
to no avail.
TIA,
--
Zlatko
P.S Is it bad manners crossposting to two pgsql mailing list? Still
new to PostgreSQL, still learning...
i thick it's epoch() in PostgreSQL....check your documentation.
Zlatko Calusic wrote:
Show quoted text
Hi!
As subject says, we are currently porting all of our data, programs
and logic from mysql to postgresql. One of the things we have yet to
resolve is how to replace mysql's UNIX_TIMESTAMP() function we used
extensively in PosgreSQL?Function works like this in mysql:
mysql> select start from connection limit 1;
+---------------------+
| start |
+---------------------+
| 2000-07-03 20:12:37 |
+---------------------+
1 row in set (0.01 sec)mysql> select UNIX_TIMESTAMP(start) from connection limit 1;
+-----------------------+
| UNIX_TIMESTAMP(start) |
+-----------------------+
| 962647957 |
+-----------------------+
1 row in set (0.00 sec)Is there any similar functionality (returning unixish number of
seconds since 1970 from the timestamp field) in PostgreSQL?I tried all of the available date/time functions, type casting but all
to no avail.TIA,
--
ZlatkoP.S Is it bad manners crossposting to two pgsql mailing list? Still
new to PostgreSQL, still learning...
Zlatko Calusic <zlatko@iskon.hr> writes:
Is there any similar functionality (returning unixish number of
seconds since 1970 from the timestamp field) in PostgreSQL?
It's amazing that I spent something like an hour trying to find an
answer, and only ten minutes waiting for the answer to it. :)
Mario Weilguni came up with a date_part('epoch', start) solution, and
that is exactly what I was looking for.
Thanks Mario!
--
Zlatko
Import Notes
Reply to msg id not found: ZlatkoCalusic'smessageof09Sep2000130239+0200
Zlatko Calusic <zlatko@iskon.hr> writes:
Is there any similar functionality (returning unixish number of
seconds since 1970 from the timestamp field) in PostgreSQL?
Sure. You can use date_part, or cast to abstime and thence to integer:
regression=# select now();
now
------------------------
2000-09-09 12:55:50-04
(1 row)
regression=# select date_part('epoch',now());
date_part
-----------
968518563
(1 row)
regression=# select now()::abstime::int4;
?column?
-----------
968518585
(1 row)
To go the other way (integer seconds to timestamp), use the cast
method in reverse:
regression=# select 968518585 :: int4 :: abstime :: timestamp;
?column?
------------------------
2000-09-09 12:56:25-04
(1 row)
(there's probably a cleaner way to do this, but that works ...)
regards, tom lane