web-dev-qa-db-fra.com

Comment soustraire des heures d'un datetime dans MySQL?

J'obtiens un champ datetime, qui est actuellement dans la requête en tant que:

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

Ce que je veux faire est de soustraire 3 heures de cette date (problèmes GMT), mais je ne peux pas le faire en PHP as PHP ne connaît que le partie de date, pas l'heure.

52
Lucas Famelli

mySQL a DATE_SUB() :

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

mais ne serait-il pas préférable d'essayer de régler le problème de fuseau horaire sous-jacent à la place?

91
Pekka 웃

En supposant que vous ayez un problème de fuseau horaire et que vous connaissiez le fuseau horaire source et de destination, vous pouvez le convertir comme ceci

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