PostgreSQL の NOW() 関数の結果から精度を削除する方法はありますか?
"2012-08-21 10:23:34.867502"
次の形式を探しています。
"2012-08-21 10:23:34"
次のSQLを使用して、タイプ「タイムゾーンなしのタイムスタンプ」の列を更新しようとしています:
UPDATE table SET column = now();
ありがとう!
PostgreSQL の NOW() 関数の結果から精度を削除する方法はありますか?
"2012-08-21 10:23:34.867502"
次の形式を探しています。
"2012-08-21 10:23:34"
次のSQLを使用して、タイプ「タイムゾーンなしのタイムスタンプ」の列を更新しようとしています:
UPDATE table SET column = now();
ありがとう!
簡単な答えは、ゼロ精度にキャストすることです。
select now()::timestamptz(0);
UPDATE tbl SET col = DATE_TRUNC('second', NOW());
DATE_TRUNCのドキュメントを参照してください。
テーブルの構造を変更するには、pgAdmin 3 で列の長さを 0 に移動するか、次のようにタイムスタンプ(0)を使用してテーブルを作成します。
CREATE TABLE public.users
(
id integer serial,
username character varying(255) NOT NULL,
email character varying(255) NOT NULL,
password character varying(255) NOT NULL,
created_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
CONSTRAINT users_pkey PRIMARY KEY (id)
);
しかし、そうすると、ミリ秒でタイムスタンプを挿入しようとするとエラーが発生します。
要件に応じて、タイムスタンプ列自体の精度を調整する別のオプションがあります。精度を 0 に設定します。これは、タイムスタンプの小数秒を処理しないレガシー プログラムで PostgreSQL を使用する場合に役立ちます。