MroongaのDATE列項目にNULLを登録しようとするが"1970-01-01"になってしまう。
環境
Windows Server 2016 バージョン 1607 (14393.4283)
MariaDB 10.5.8 with Mroonga 11.01 winx64
MariaDB 10.5.8 with Mroonga 11.01 winx64
原因
以下に書いてあった。
https://mroonga.org/ja/docs/reference/limitations.html
https://mroonga.org/ja/docs/reference/limitations.html
5.6.3. カラムの値に関する制限事項
ストレージモードにおいて、カラムの値には制限があります。
MroongaストレージエンジンはNULL値を自動的に補正します。
例えば、 DATE 型や DATETIME 型に指定されたNULL値はMroongaストレージエンジンが日や月の値として0を1へと自動的に補正します。
つまり、0月は1月へ、0日は1日として扱います。
そして、NULL値はUNIX時間の0秒 (1970-01-01)として扱います。
このような自動変換は DATE 型や DATETIME 型に限定されません。
NULL値はカラムのデフォルト値へと変換されます。多くの場合、文字列型であれば空文字列へ、数値型であれば0へと変換されます。
ストレージモードにおいて、カラムの値には制限があります。
MroongaストレージエンジンはNULL値を自動的に補正します。
例えば、 DATE 型や DATETIME 型に指定されたNULL値はMroongaストレージエンジンが日や月の値として0を1へと自動的に補正します。
つまり、0月は1月へ、0日は1日として扱います。
そして、NULL値はUNIX時間の0秒 (1970-01-01)として扱います。
このような自動変換は DATE 型や DATETIME 型に限定されません。
NULL値はカラムのデフォルト値へと変換されます。多くの場合、文字列型であれば空文字列へ、数値型であれば0へと変換されます。
0 件のコメント:
コメントを投稿