Проблема, с которой вы сталкиваетесь, заключается в том, что сервер генерирует временную метку в «некотором» часовом поясе, возможно, локальном для него. Ваше клиентское приложение не знает об этом. Этот часовой пояс сервера может даже измениться в будущем. Даже если оно не изменяется, оно может быть подвержено изменениям летнего времени.
Использование CURRENT_TIMESTAP
замечательно, чтобы убедиться, что база данных всегда записывает правильное значение. Однако в последующих запросах, когда вам нужно отфильтровать данные по нему, ваше приложение должно знать часовой пояс, чтобы отправлять правильные значения в запросе.
MySQL DATATIME
и TIMESTAMP
типы данных не имеют альтернативных вариантов WITHOUT TIME ZONE
. Похоже, вам нужен такой тип данных, который предлагают другие базы данных.
Учитывая это, я вижу решение, которое заключается в том, что вы устанавливаете часовой пояс на определенный во время конфигурации и соответственно конвертируете. То есть сервер и приложение должны постоянно использовать один и тот же. И да, я знаю, что это не то, что вам нужно, но вам нужно будет каждый раз выполнять преобразование часового пояса.
В некоторых ORM вы можете использовать «преобразователь типов» для автоматического преобразования при каждой вставке / обновлении / удалении / выборе. Возможно, у вас есть эта опция, чтобы не менять весь ваш код.