私はタイムゾーンフィールドに私の値をタイムスタンプに保存しようとしています。 1970年からミリ秒単位です。
select TO_CHAR(TO_TIMESTAMP(1401432881230), 'DD/MM/YYYY HH24:MI:SS.MS')
30/5/2014 11:29:42 10:54:41.230
が必要ですが、22/08/46379 23:27:02.000
を取得します
nixタイムスタンプ 秒で時間を測定し、notミリ秒(mostlyすべての場所で、PostgreSQLでも)。
したがって、呼び出す必要があります
SELECT TO_TIMESTAMP(1401432881230 / 1000);
ミリ秒を保持したい場合は、double precision
:
SELECT TO_TIMESTAMP(1401432881230::double precision / 1000);
これは、msをタイムスタンプに変換し、msではなく秒を維持する方法です。受け入れられた応答はmsをドロップします。
WITH ts AS (SELECT 1401432881230 AS ts)
SELECT to_timestamp(ts / 1000) + ((ts % 1000 ) || ' milliseconds') :: INTERVAL
FROM ts;
-- FOR ALTER COLUMN
ALTER TABLE my_info
ALTER COLUMN tstmp TYPE TIMESTAMP USING to_timestamp(tstmp / 1000) + ((tstmp % 1000) || ' milliseconds') :: INTERVAL;