Запрос часового пояса MySQL

Я получил два поля: time_scan_start и time_scan_end (поле метки времени).

Когда я открываю свое соединение с MySQL с PDO, я использую SET NAMES utf8,time_zone = "+0:00"; ,

Теперь, когда я делаю запрос в MySQL, мне нужно использовать время UTC WHERE time_scan_start >= UTC или мне нужно использовать локальную зону PHP? Будет ли MySQL делать это самостоятельно?

Я провел некоторое тестирование с gmdate и датой, когда-то это сработало, другие – нет.

благодаря

Если вы сравниваете поля TIMESTAMP , вам нужно использовать значения сравнения в часовом поясе сервера. Вы можете определить часовой пояс сервера через:

 SELECT @@time_zone; 

Поэтому, если вы выполнили

 SET NAMES time_zone = "+0:00"; 

то вы будете использовать значения, основанные на UTC.

Это связано с тем, что поля TIMESTAMP хранятся в MySQL в формате UTC и преобразуются в часовой пояс сервера перед отображением (или сравнением).

Примечание. Если вы сравниваете поля DATETIME или поля TIME , вам нужно будет использовать значение сравнения в том же часовом поясе, которое использовалось, когда значение было вставлено в поле.

Это связано с тем, что поля DATETIME и TIME хранятся в MySQL без какой-либо информации о часовом поясе и не преобразуются перед отображением (или сравнением).

MySQL DATETIME ничего не знает о часовом поясе. Поэтому вам нужно решить, какой часовой пояс будет вашим «стандартным» (обычно UTC) и хранить все ваши временные метки, используя этот часовой пояс, используя CONVERT_TZ если это необходимо.

Затем выполните то же самое для поиска, то есть преобразуйте значения в UTC, прежде чем использовать их в поиске.