PostgreSQLで日付/時刻・時間を秒数として取得する

PostgreSQLで日付/時刻・時間を秒数として取得する方法をメモしておきます。
結構使う用途は多いのですが、マニュアルにもあんまり目立つようには書いてないので。。。

例えば、通常日付/時刻を取得すると次のような感じになると思います。

SELECT now();
now
——————————-
2007-07-08 23:14:47.843862+09
(1 row)

で、これを秒数で取得するにはEXTRACT関数のEPOCHを使って次のようにします。
日付/時刻の場合、秒数は1970-01-01 00:00:00 からの秒数になります。

SELECT EXTRACT(EPOCH FROM now());
date_part
—————–
1183904478.0009
(1 row)

とくに使いでがあるのが、2つの日付の差を求めたりする場合ですね。
普通に差を求めてしまうと、次のような感じになってしまい、いまいち使いににくいです。

SELECT ‘2007-07-10 10:00:00’::timestamp – ‘2007-06-25 12:30:30’::timestamp;
?column?
——————
14 days 21:29:30
(1 row)

でも、EXTRACT関数のEPOCHを使うと、時間の差を秒数で取得できるため、いろいろな処理に応用しやすいかなって思います。

SELECT EXTRACT(EPOCH FROM ‘2007-07-10 10:00:00’::timestamp – ‘2007-06-25 12:30:30’::timestamp);
date_part
———–
1286970
(1 row)

Twitterでも情報配信中!



コメント(1)


[…] 結構前に書いた、「PostgreSQLで日付/時刻・時間を秒数として取得する」の逆のパターンです。あんまり使うことはないのですが、せっかくなのでメモっておきます。 […]


コメントを残す

メールアドレスが公開されることはありません。



※コメントは承認制です。承認されるまで表示されません。