2013-02-05 1 views
1

왜 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에 날짜를 업데이트 할 경우 datetimedatetimetz

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 

때문에 교리는 문제가 무엇입니까?

+1

32 비트'단지 1901의 끝과 그 범위를 벗어나는 날짜를 처리하려면 2038의 시작 사이에 날짜를 표시 할 수 time_t' 값, 당신은 64 비트'time_t'이 필요합니다. '세계의 끝'- 1970-01-01 00:00:00 + 00 : 00 시대에 기반한 32 비트 'time_t'값이 완전히 소진 될 때까지 25 년이 채 남지 않았습니다. –

+0

@JonathanLeffler가 어딘가에 Doctrine에 64 time_t를 사용하도록 설정하거나 전달할 수 있습니까? –

+1

전혀 교리를 알지 못한다. 그것은 컴파일시에 문제가 될 것이다. PHP와 Doctrine의 64 비트 빌드가 필요합니다. 32 비트 전용 시스템을 사용하고 있다면 아마도 멈출 것입니다. 64 비트 시스템 (즉, 하드웨어가 x86_64 또는 다른 64 비트 칩) 인 경우 모든 64 비트를 다시 빌드 할 수 있으며 제대로 작동 할 수 있습니다. 그러나, 그것은 사소한 사업이 아닙니다. ('rebuild'의 경우 'rebuild 또는 download prebuilt'를 읽을 수 있습니다. 64 비트 시스템에서는 64 비트 소프트웨어가 거의 필요합니다.) –

답변

2

PHP의 신기원은 시스템에 따라 1970 또는 1901입니다. PHP 매뉴얼에서

:

타임 스탬프의 유효 범위 (금), 13 일 (화)에 1901년 12월 그리니치 표준시 20시 45분 54초, 2038년 1월 19일 그리니치 표준시 03시 14분 7초에서 일반적입니다. (이들은 이며 32 비트 부호가있는 정수의 최소값과 최대 값에 해당합니다. 그러나 PHP 5.1.0 이전에는 일부 시스템 (예 : Windows)에서이 범위가 01-01-1970에서 19-01-2038로 제한되었습니다.

http://php.net/manual/en/function.date.php

관련 문제