Как вычесть 3 часа из datetime в MySQL?

Я получаю поле datetime, которое в настоящее время находится в запросе как:

SELECT DATE_FORMAT(x.date_entered, '%Y-%m-%d') AS date FROM x ORDER BY date ASC

то, что я хочу сделать, это вычесть 3 часа с этой даты (проблемы GMT), но я не могу сделать это в PHP, поскольку PHP знает только часть даты, а не время.

2 ответов


mySQL имеет DATE_SUB():

SELECT DATE_SUB(column, INTERVAL 3 HOUR)....

но не было бы лучше попробовать и разобраться в основной проблеме часового пояса вместо этого?


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

SELECT DATE_FORMAT(CONVERT_TZ(x.date_entered, 'UTC', 'Europe/Berlin'),
                   '%Y-%m-%d') AS date
FROM x ORDER BY date ASC;