Yii 1.x에서 에 MySQL FROM UNIXTIME
을 올바르게 사용해야합니까?CDbMigration을 사용하여 MySQL 테이블에 현재 시간을 입력하십시오.
난 그냥 인쇄 이 this answer 때에서의 MySQL의 DateTime
필드, 타임 스탬프로 주어진 현재의 시간을 변환 솔루션을 빌렸다 :
echo 'FROM_UNIXTIME('.$base.')'."\n";
echo 'FROM_UNIXTIME('.$sixDaysLater.')'."\n";
다 잘 보인다
FROM_UNIXTIME(1418223600)
FROM_UNIXTIME(1418742000)
하지만, 마이 그 레이션의 일부로 같은 기술을 사용하려고 할 때 :
$this->insert('contents', array
(
'author_id'=>1,
'type'=>5,
'status'=>1,
'category'=>1,
'title'=>'title',
'body'=>'body',
'creation_date'=>'FROM_UNIXTIME('.$base.')',
'modification_date'=>'FROM_UNIXTIME('.$base.')',
'availability_date'=>'FROM_UNIXTIME('.$sixDaysLater.')',
'short'=>'short'
));
이것은 실패합니다. 즉, 마이그레이션은 정상적으로 진행되지만 phpMyAdmin에서이 레코드의 관련 필드에 예상 값이 아닌 0 (0000-00-00 00:00:00
)이 채워진 것을 볼 수 있습니다.
무엇이 누락 되었습니까? insert
의 값이 인코딩/이스케이프되고 있기 때문에 그렇습니까?
new CDbExpression("NOW()");
는 말은 :
'creation_date'=>new CDbExpression("NOW()")
을 아니면 FROM UNIXTIME
을 사용하려는 경우 동일한 작업을 수행 할 수 있습니다
날짜가 모두 0 일은 잘못된 날짜 문자열을 삽입하려고했음을 의미합니다. '$ base' 값이 유효하지 않은 날짜를 얻었을 때 그 값을 확인 했습니까? –
네, 위에서 볼 수 있듯이 (첫 번째 예), 값은 올바른 타임 스탬프입니다. 아래의 대답과 내 자신의 두 번째 생각을 바탕으로, 전체 값이 벗어 났기 때문에 그 문제가 있다고 가정합니다. – trejder