Обсуждение: How do I get the current time in seconds in the unix epoch?
I have a function in PL/pgSQL which needs the current time in seconds
expressed as an int4. In 7.1 I was able to get this (I thought) with
date_part(''epoch'', timestamp ''now'') . That doesn't seem to work for me
in last week's -current.
Here's the PLpgSQL:
v_seed := date_part(''epoch'', timestamp ''now'');
And here's the output:
NOTICE: Error occurred while executing PL/pgSQL function
NOTICE: line 4 at assignment
ERROR: Timestamp with time zone units 'epoch' not recognized
What's the best way to do this?
Take care,
Bill
Bill Studenmund <wrstuden@netbsd.org> writes:
> In 7.1 I was able to get this (I thought) with
> date_part(''epoch'', timestamp ''now'') . That doesn't seem to work for me
> in last week's -current.
Indeed: in 7.1 I can do
test71=# select date_part('epoch', timestamp 'now');date_part
------------1002946239
(1 row)
but current sources give
regression=# select date_part('epoch', timestamp 'now');
ERROR: Timestamp with time zone units 'epoch' not recognized
Thomas, I think you broke something.
regards, tom lane
> I have a function in PL/pgSQL which needs the current time in seconds
> expressed as an int4. In 7.1 I was able to get this (I thought) with
> date_part(''epoch'', timestamp ''now'') . That doesn't seem to work for me
> in last week's -current.
>
> Here's the PLpgSQL:
>
> v_seed := date_part(''epoch'', timestamp ''now'');
>
> And here's the output:
>
> NOTICE: Error occurred while executing PL/pgSQL function
> NOTICE: line 4 at assignment
> ERROR: Timestamp with time zone units 'epoch' not recognized
Hmmm. I don't know why date_part isn't working, but I now only use the
EXTRACT syntax for maximum SQL compatibility. ie. Do this instead:
v_seed := EXTRACT (EPOCH FROM CURRENT_TIMESTAMP);
Cheers,
Chris
> > In 7.1 I was able to get this (I thought) with
> > date_part(''epoch'', timestamp ''now'') . That doesn't seem to work for me
> > in last week's -current.
> Thomas, I think you broke something.
It was actually a side effect of changing the date/time parser to no
longer ignore unrecognized text fields. The previous behavior has been
there from the Beginning, and the new behavior meant that the search
routine no longer returns "ignore" as a status (which caused the calling
routine to drop into the "special case" tests including "epoch").
Anyway, I've got patches, so no worries...
- Thomas
On Mon, 15 Oct 2001, Christopher Kings-Lynne wrote: > Hmmm. I don't know why date_part isn't working, but I now only use the > EXTRACT syntax for maximum SQL compatibility. ie. Do this instead: > > v_seed := EXTRACT (EPOCH FROM CURRENT_TIMESTAMP); Unfortunatly that gives the same error. I think the problem is that the underlying code isn't liking the EPOCH timezone. Tom mentioned he had patches. Take care, Bill