2017-03-21 67 views
0

私は以下のコマンドを使用して私の列のデータ型を以前に変更しましたが、今は同じ列に対して0000-00-00のようなデフォルト値を追加したいと思います。postgresqlのdateデータ型にデフォルト値0000-00-00を追加するには?

ALTER TABLEテーブル名は、(列名を::日付)を使用して、列名型日付を変更

+1

これは無効な日付で、Postgresは無効な日付値を保存させません。これをデフォルト値として使用することはできません。値がないことを示す場合は、 'null'を使用します。これがそのためです。また、すべてのDATE値の前にヌル以外の値が必要な場合は、 '-infinity'を使用してください。 –

+0

「不明な日付」を列に格納する機能が必要な場合は、NULL可能とマークします。 MySQLの '0000-00-00'をプレースホルダとして使う振る舞いを模倣しようとしているのではないかと思っていますが、そうする理由はないと思います。 – IMSoP

+0

「0000-00-00」のような日付はありません。 「0」も「0」も「0」もありません。可能な限り小さいものは「0001-01-01」です。 – freakish

答えて

2

0000-00-00が有効な日付ではありませんので、列がdateある場合は、問題があります。デフォルトを設定する構文は次のとおりです。

alter table t alter column col set default '0001-01-01'; 

ただし、有効な日付が必要です。あなたのアプリケーションでうまく動作するのであれば、私はちょうどNULLを使うことをお勧めします。

+1

完全性のために、現在ブロックされている列にNULLを許可するには、構文は 'alter table t column column drop not nullを変更してください ' – IMSoP

+0

' 0001-01-01 'の代わりにNULLを挿入することは可能ですか? –

関連する問題