У меня старая система PHP, использующая MySQL 5.5.47 в качестве БД.
Ребята, создавшие систему, приняли странное решение.
В некоторых случаях они сохраняли значение даты без дня, например « 2018-01-00 ». Тип поля - ДАТА.
Во многих запросах используется предложение where, например: UNIX_TIMESTAMP(DATE(<DATE>)) BETWEEN 1514757600 AND 1546207210
, где <DATE>
- это столбец, содержащий записи типа «2018-01-00», «2018-02-00» и т. Д.
Две метки времени представляют даты 2018-01-01 и 2018-12-31.
На производстве запросы этого типа выполняются без проблем.
На моей локальной машине они не возвращают никаких результатов.
Что я обнаружил, если запустить команду: SELECT UNIX_TIMESTAMP( DATE( '2018-01-00' ) )
на производстве, то результат будет 1514757600 , но на моей локальной машине он вернет 0 .
Я использую композицию Docker, чтобы воспроизвести производство как можно ближе. Первоначально я использовал MySQL 5.6 для локальной разработки, когда столкнулся с этой проблемой, я пытался с MySQL 5.5.62, но результат тот же.
Кто-нибудь знает, как я могу настроить свой локальный MySQL для работы в качестве рабочего?
Запрос на производство :
mysql> SELECT DATE('2018-01-00'), UNIX_TIMESTAMP(DATE('2018-01-00')), UNIX_TIMESTAMP('2018-01-00');
+--------------------+------------------------------------+------------------------------+
| DATE('2018-01-00') | UNIX_TIMESTAMP(DATE('2018-01-00')) | UNIX_TIMESTAMP('2018-01-00') |
+--------------------+------------------------------------+------------------------------+
| 2018-01-00 | 1514757600 | 0 |
+--------------------+------------------------------------+------------------------------+
Запрос на локальный :
mysql> SELECT DATE('2018-01-00'), UNIX_TIMESTAMP(DATE('2018-01-00')), UNIX_TIMESTAMP('2018-01-00');
+--------------------+------------------------------------+------------------------------+
| DATE('2018-01-00') | UNIX_TIMESTAMP(DATE('2018-01-00')) | UNIX_TIMESTAMP('2018-01-00') |
+--------------------+------------------------------------+------------------------------+
| 2018-01-00 | 0 | 0 |
+--------------------+------------------------------------+------------------------------+