Postgres v10.xの_TIMESTAMP WITH TIME ZONE
_デフォルト制約の_CREATE TABLE
_列をフォーマットできますか?
コード例:
_create_date TIMESTAMP WITH TIME ZONE
DEFAULT to_char(current_timestamp, 'DD-MON-YYYY HH24:MI:SS')
NOT NULL
_
これを実行すると、次のエラーが発生します。
エラー:列「create_date」のタイプはタイムゾーン付きのタイムスタンプですが、デフォルトの式はテキスト型ですヒント:式を書き換えるかキャストする必要があります。 SQL状態:42804
ただし、 Postgres Docsによれば このタイプのフォーマットは可能です。
これをto_timestamp()
メソッドでキャストしてみましたが、次のエラーが発生します。
エラー:関数to_timestamp(タイムゾーン付きタイムスタンプ、不明)は存在しませんヒント:指定された名前と引数の型に一致する関数はありません。明示的な型キャストを追加する必要がある場合があります。 SQLの状態:42883
Postgres v10.xのCREATE TABLEデフォルト制約でTIMESTAMP WITH TIME ZONE列をフォーマットできますか?
いいえ、それは意味がありません。タイムスタンプはタイムスタンプとして保存されます。特殊タイプです。 displayの書式を設定します。どの時点でも同じように保存されます。書式設定の時間は、データベースでまったく行われないようにすべきです。
このように考えると、一部の列にはローマ数字表現が必要になる場合がありますが、データベースが整数をバイナリ表現で格納する場合でも、.
これで、タイムスタンプのクライアントのデフォルト出力フォーマットを変更したい場合は、確実に変更できます。 ドキュメントから
日付/時刻スタイルは、ユーザーが
SET datestyle
コマンド、 postgresql.conf構成ファイルのDateStyleパラメーター 、またはPGDATESTYLE
環境変数を使用して選択できます。サーバーまたはクライアント。