[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 メーリングリストの案内