Идеи пользователя 80243

Рейтинг: 2.4162  
Новая
Предложил Пользователь 80243 18.06.2014 15:39:03

некорректный DateTime при 0000-00-00 00:00:00

Имеем:
поле в базе типа TIMESTAMP
мапинг этого поля с типом datetime

Если поле имеет значение NULL, то всё ок.
НО если поле имеет значение 0000-00-00 00:00:00, \Bitrix\Main\DB\Result::fetch() проводит пост обработку методом \Bitrix\Main\DB\MysqliResult::convertDataFromDb()

protected function convertDataFromDb($value, $fieldType)
    {
        switch ($fieldType)
        {
            case 'timestamp':
            case 'datetime':
                return $value === null ? null : new \Bitrix\Main\Type\DateTime($value, "Y-m-d H:i:s");
                break;
            case 'date':
                return $value === null ? null : new \Bitrix\Main\Type\DateTime($value, "Y-m-d");
                break;
            default:
                break;
        }

        return $value;
    } 


и врезультате \Bitrix\Main\Type\DateTime::getValue()->toString() возращает
-0001-11-30 00:00:00
Что является некорректным.
Предлагаю внести дополнительную проверку на основе \Bitrix\Main\Type\DateTime::getTimestamp()
при таком значении вернёт false