Как вычесть часы из даты и времени в MySQL? - PullRequest
52 голосов
/ 16 мая 2011

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

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

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

Ответы [ 2 ]

87 голосов
/ 16 мая 2011

mySQL имеет DATE_SUB():

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

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

2 голосов
/ 11 августа 2016

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

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