Doctrine が古い日付を好まないのはなぜですか?
Exception was thrown : Could not convert database value "1876-01-01 00:00:00-00:00:00" to Doctrine Type datetime
そしてもう一つ:
Exception was thrown : Could not convert database value "0000-00-00 00:00:00-00:00:00" to Doctrine Type datetime
私のエンティティでは、オーバーライドdatetime
してdatetimetz
Type::overrideType('datetime', 'Doctrine\DBAL\Types\VarDateTimeType');
Type::overrideType('datetimetz', 'Doctrine\DBAL\Types\VarDateTimeType');
日付を更新すると、正常に1976-01-01 00:00:00-00:00:00
動作します。
アップデート:
したがって、Ubuntu 12.04 64 ビットを実行しています。また、これらのテストから 64 ビットの time_t が動作していることもわかっています。
strtotime() は、PHP 5.3.3 を実行している 32 ビット システムと 64 ビット システムで異なる出力を生成します (前述のとおり)。これは、「ゼロ日付」 (「0000-00-00 00:00:00」) だけでなく、従来の 32 の日付範囲外の日付にも影響します。
テスト:
strtotime("0000-00-00 00:00:00") returns FALSE on a 32 bit system.
strtotime("0000-00-00 00:00:00") returns -62169955200 on a 64 bit system.
実行すると、次のecho strtotime("0000-00-00 00:00:00");
ようになります。
php time_test.php -62169966000
Doctrineに問題がありますか?