Trasis Inc.

渋谷拠点のシステム開発会社

PostreSQLでJavaのミリ秒をtimestamp型で取り出す

概要

PostgreSQL 上に作成したテーブルに対し、Java で時刻を timestamp 型ではなくミリ秒(long 値)のまま格納した場合、それを select で timestamp 型として取り出すには以下のように SQL を記述する。

SELECT
(lastaccess / 1000) :: text :: interval + '1970-01-01' :: timestamp
FROM
table1;

lastaccess は bigint 型のカラム。これを1000分の1して秒単位にし、 epoch 秒(グリニッジ標準時間1970年1月1日00:00:00からの経過秒数) に足している。

例: DB に格納された tomcat のセッションでサイズの大きいものを見つける

次のような SQL を実行する。

SELECT
length(data) as len,
session_id,
(lastaccess / 1000) :: text :: interval + '1970-01-01' :: timestamp
FROM
tomcat_sessions
ORDER BY len desc
LIMIT 20;