12

PostgreSQL の NOW() 関数の結果から精度を削除する方法はありますか?

"2012-08-21 10:23:34.867502"

次の形式を探しています。

"2012-08-21 10:23:34"

次のSQLを使用して、タイプ「タイムゾーンなしのタイムスタンプ」の列を更新しようとしています:

UPDATE table SET column = now();

ありがとう!

4

5 に答える 5

23

簡単な答えは、ゼロ精度にキャストすることです。

select now()::timestamptz(0);
于 2012-08-21T19:01:20.970 に答える
14
UPDATE tbl SET col = DATE_TRUNC('second', NOW());

DATE_TRUNCのドキュメントを参照してください。

于 2012-08-21T18:07:37.523 に答える
3

テーブルの構造を変更するには、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)
);

しかし、そうすると、ミリ秒でタイムスタンプを挿入しようとするとエラーが発生します。

于 2016-09-23T15:45:49.243 に答える
0

要件に応じて、タイムスタンプ列自体の精度を調整する別のオプションがあります。精度を 0 に設定します。これは、タイムスタンプの小数秒を処理しないレガシー プログラムで PostgreSQL を使用する場合に役立ちます。

于 2015-10-08T01:17:04.210 に答える