Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error when try to parse DateTime expression #9

Open
arkanovas opened this issue Oct 21, 2022 · 2 comments
Open

Error when try to parse DateTime expression #9

arkanovas opened this issue Oct 21, 2022 · 2 comments

Comments

@arkanovas
Copy link

arkanovas commented Oct 21, 2022

DateTime::__construct(): Failed to parse time string (to_date('01.01.9999') at position 0 (t): The timezone could not be found in the database

/var/www/api.is74.ru/vendor/tigrov/yii2-pgsql/src/ColumnSchema.php in __construct at line 135
...
return json_decode($value, true);
case Schema::TYPE_TIMESTAMP:
case Schema::TYPE_TIME:
case Schema::TYPE_DATE:
case Schema::TYPE_DATETIME:

/* Тут стоит перехватывать исключения, потому что выражения бывают несколько сложнее, чем просто текущее время.
Бывает дата прописана, бывает прописывается текущее время со сдвигом вперед.
В случае если не удалось разобрать строку, то вернуть NULL.

I think here need to add try-catch. Parser can't parse some expressions and we have an exception. But we can catch exception and set NULL value for column in this case. Now we need change default value in database although this is valid expression for database.
*/
return new \DateTime($value);
case Schema::TYPE_COMPOSITE:
return $this->phpTypecastComposite($value);
}
return $this->typecast($value);

@Tigrov
Copy link
Owner

Tigrov commented Nov 13, 2022

В какой версии PHP выдается сообщение об ошибке?
Проверил в PHP 8.0.6 такой ошибки нет.

@arkanovas
Copy link
Author

Версия старая была - 5.6. Но есть подозрение, что с версией не связано, т.к. синтаксис записи дат в постгресе и php несколько отличается.
В настоящее время обновились до 8.1, но проблему воспроизвести не получается, т.к. нет таких полей - убрали все такие дефолтные значения. Можно будет попытаться искусственно их снова создать, будет время - попробую. Но мне кажется стоило бы в любом случае сделать перехват исключения, т.к. дефолтные выражения могут быть любыми и что-то однозначно не будет переведено в нативную дату пхп.
В любом случае спасибо за реакцию.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants