Чтение очень старых дат из MySQL на Windows - PullRequest
0 голосов
/ 29 июня 2018

Мне нужно было хранить в таблице MySQL даты только с днем ​​и месяцем (они определяют абстрактные периоды, которые можно «привязать» к году спустя). Я нашел более чистым использовать тип поля DATETIME, а не, например, целое число. Поэтому я решил хранить все даты в одном и том же, очень старом году. Поле MySQL DATETIME начинается с 1000 года, поэтому я выбрал 1004 год (поскольку мне, возможно, придется хранить значение 02-29 в этих полях, а 1000 не является високосным годом).

Я помещаю это значение в объект PHP DateTime, и на моей странице отображаются только части месяца и дня. В основном, я делаю это:

$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateInDb);
echo $date->format('m-d');

Это прекрасно работает на моем сервере разработки (Debian 7 / PHP 5.6 / Mysql 5.5) и в нескольких производственных средах на Linux с различными версиями PHP 5.6+ и MySQL / MariaDB)

У меня только одна производственная среда в Windows (PHP 5.6 и MySQL 5.7 в XAMPP). В этой среде даты должным образом хранятся в базе данных, но когда я отображаю месяц / день на своей странице, я всегда получаю 01/01, как если бы значение было каким-то образом переведено в метку времени по умолчанию.

Это исправляет замена 1004 года на что-то более новое, например 2000. Для меня это приемлемое решение, мне все равно, какой год хранится, поскольку я все равно его не использую (я использовал этот трюк только для того, чтобы понять, что год бесполезен для будущего)

Я только ищу объяснение причины, чтобы удовлетворить мое любопытство, и потому что это может быть полезно для кого-то еще в будущем, кто действительно нуждается в старых датах! Это известная ошибка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...