왜 Doctrine은 이전 날짜와 유사하지 않습니까?데이터베이스 값 "1876-01-01 00 : 00 : 00-00 : 00 : 00"을 Doctrine Type datetime으로 변환 할 수 없습니다.
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
내 법인에서 나는 내가 그것을 잘 작동 1976-01-01 00:00:00-00:00:00
에 날짜를 업데이트 할 경우 datetime
및 datetimetz
Type::overrideType('datetime', 'Doctrine\DBAL\Types\VarDateTimeType');
Type::overrideType('datetimetz', 'Doctrine\DBAL\Types\VarDateTimeType');
오버라이드 (override) 할.
가 UPDATE :
그래서 나는 우분투 12.04 64 비트를 실행하는거야, 나 또한 내가이 테스트에서 작업 time_t 64 비트를 알고 :
한 strtotime()가 (32)에 서로 다른 출력을 생성하고 PHP 5.3.3을 실행하는 64 비트 시스템 (이전에 언급 한 바와 같이). 이는 "0 일" ("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
때문에 교리는 문제가 무엇입니까?
32 비트'단지 1901의 끝과 그 범위를 벗어나는 날짜를 처리하려면 2038의 시작 사이에 날짜를 표시 할 수 time_t' 값, 당신은 64 비트'time_t'이 필요합니다. '세계의 끝'- 1970-01-01 00:00:00 + 00 : 00 시대에 기반한 32 비트 'time_t'값이 완전히 소진 될 때까지 25 년이 채 남지 않았습니다. –
@JonathanLeffler가 어딘가에 Doctrine에 64 time_t를 사용하도록 설정하거나 전달할 수 있습니까? –
전혀 교리를 알지 못한다. 그것은 컴파일시에 문제가 될 것이다. PHP와 Doctrine의 64 비트 빌드가 필요합니다. 32 비트 전용 시스템을 사용하고 있다면 아마도 멈출 것입니다. 64 비트 시스템 (즉, 하드웨어가 x86_64 또는 다른 64 비트 칩) 인 경우 모든 64 비트를 다시 빌드 할 수 있으며 제대로 작동 할 수 있습니다. 그러나, 그것은 사소한 사업이 아닙니다. ('rebuild'의 경우 'rebuild 또는 download prebuilt'를 읽을 수 있습니다. 64 비트 시스템에서는 64 비트 소프트웨어가 거의 필요합니다.) –