Обсуждение: how to cast localtimestamp to bigint???

Поиск
Список
Период
Сортировка

how to cast localtimestamp to bigint???

От
"Pradeepkumar, Pyatalo (IE10)"
Дата:
Hi,

I am having a table something like this....

CREATE TABLE(PointId integer, PointName varchar(50),PointType integer,
createtime bigint);

where createtime is the current timestamp when the tuple is inserted.

now how do I insert values into the above table. Is there a way to cast
timestamp to bigint.
Also can anyone suggest as to which date function to use -
CURRENT_TIMESTAMP, LOCALTIMESTAMP, timeofday(), now....


> With Best Regards
> Pradeep Kumar P J
>

Re: [SQL] how to cast localtimestamp to bigint???

От
Edmund Bacon
Дата:
I would have expected

SELECT current_timestamp::abstime::bigint;

to have worked, but there is no conversion abstime -> bigint.

Instead use

SELECT current_timestamp::abstime::int::bigint;

The final cast to bigint is not strictly neccessary.

This all begs the question, though, of why you are using a bigint for
createtime and not a timestamp?


Pradeepkumar, Pyatalo (IE10) wrote:
> Hi,
>
> I am having a table something like this....
>
> CREATE TABLE(PointId integer, PointName varchar(50),PointType integer,
> createtime bigint);
>
> where createtime is the current timestamp when the tuple is inserted.
>
> now how do I insert values into the above table. Is there a way to cast
> timestamp to bigint.
> Also can anyone suggest as to which date function to use -
> CURRENT_TIMESTAMP, LOCALTIMESTAMP, timeofday(), now....
>
>
>
>>With Best Regards
>>Pradeep Kumar P J
>>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster

--
Edmund Bacon <ebacon@onesystem.com>

Re: [SQL] how to cast localtimestamp to bigint???

От
Guy Fraser
Дата:
You don't need to use a bigint, read the documentation on data types.

There are a number of different things you can use for a timestamp, here
are a few :

abstime
abstime with timezone
timestamp
timestamp with timezone

Then when you are inserting your data, you can use 'now' as the time.

Eg.
CREATE TABLE pointy_stuff (
    PointId integer,
    PointName varchar(50),
    PointType integer,
    CreateTime abstime
);

INSERT INTO pointy_stuff (
    PointId,
    PointName,
    PointType,
    CreateTime
) VALUES (
    '12345',
    'point1',
    '1',
    'now'
);

I believe abstime is the smallest timestamp, but I could be wrong.

To output the data as a bigint I believe you can use this.

SELECT
    PointId,
    PointName,
    PointType,
    date_part('epoch',CreateTime) as unix_ts
FROM
    pointy_stuff
;

Hope that helps.

Pradeepkumar, Pyatalo (IE10) wrote:

>Hi,
>
>I am having a table something like this....
>
>CREATE TABLE(PointId integer, PointName varchar(50),PointType integer,
>createtime bigint);
>
>where createtime is the current timestamp when the tuple is inserted.
>
>now how do I insert values into the above table. Is there a way to cast
>timestamp to bigint.
>Also can anyone suggest as to which date function to use -
>CURRENT_TIMESTAMP, LOCALTIMESTAMP, timeofday(), now....
>
>
>

Re: [SQL] how to cast localtimestamp to bigint???

От
george young
Дата:
On Thu, 12 Aug 2004 07:47:06 -0700
"Pradeepkumar, Pyatalo (IE10)" <Pradeepkumar.Pyatalo@honeywell.com> threw this fish to the penguins:

> I am having a table something like this....
>
> CREATE TABLE(PointId integer, PointName varchar(50),PointType integer,
> createtime bigint);
>
> where createtime is the current timestamp when the tuple is inserted.
>
> now how do I insert values into the above table. Is there a way to cast
> timestamp to bigint.
> Also can anyone suggest as to which date function to use -
> CURRENT_TIMESTAMP, LOCALTIMESTAMP, timeofday(), now....

You could use(from http://www.postgresql.org/docs/7.4/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT)

  EXTRACT (field FROM source)
  epoch

    For date and timestamp values, the number of seconds since 1970-01-01 00:00:00-00 (can be negative); for interval
values,the total number of seconds in the interval 

e.g.:

select CURRENT_TIMESTAMP, extract('epoch' from CURRENT_TIMESTAMP)::bigint;
(1 row)
          timestamptz          | date_part
-------------------------------+------------
 2004-08-13 13:27:30.715408-04 | 1092418051

The bigint cast will round to the nearest second.


See:
  http://www.postgresql.org/docs/7.4/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT

for subtleties of various current time/date functions.

-- George Young
--
"Are the gods not just?"  "Oh no, child.
What would become of us if they were?" (CSL)