[pgsql-jp: 35952] Re: Timestampとbigintの変換
ISHIDA Akio
iakio @ mono-space.net
2005年 9月 6日 (火) 19:55:24 JST
こんにちは。石田@苫小牧市です。
koyama wrote:
> k7-koyamaと申します
>
> Postgres8 を利用しています
>
> BIGINT の数値を、Timestampに変換したい件で、質問させて下さい
>
> BIGINTカラムには、1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数が
> 入っているのですが、これをTimestampに変換したいのです。
>
>
> マニュアルの、functions-datetime.html ページにある
>
> *********************************************************
> microseconds
>
> 端数部分も含み、1,000,000を乗じられた秒フィールド。
> 全ての秒を含むことに注意
> SELECT EXTRACT(MICROSECONDS FROM TIME '17:12:28.5');
> Result: 28500000
> *********************************************************
>
> に関係がありそうなのですが、この逆のパターンを行いたいのです。
>
> ご存じの方がいらっしゃいましたら、ご返答よろしくお願い致します。
同じマニュアルの、epochの説明のところに似たパターンがあります。
http://www.postgresql.jp/document/pg803doc/html/functions-datetime.html
----
SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours');
Result: 442800
以下に、この経過秒数をタイムスタンプ値に変換する方法を示します。
SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 982384720 *
INTERVAL '1 second';
----
INTERVAL型にマイクロ秒という単位は書けないようなので、
こんな感じでしょうか(1234ミリ秒の場合)。
SELECT timestamp 'epoch' + 1234 * interval '0.001 second';
pgsql-jp メーリングリストの案内