84 votes

Comment soustraire les heures d'une date dans MySQL ?

J'obtiens un champ de date, qui est actuellement dans la requête comme :

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

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

160voto

Pekka 웃 Points 249607

MySQL a DATE_SUB() :

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

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

8voto

webjunkie Points 2101

En supposant que vous ayez un problème de fuseau horaire et que vous connaissiez le fuseau horaire de la source et de la destination, vous pourriez le convertir de la manière suivante

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

1voto

Solomon Points 1

Requête de sélection normale. enter image description here

Une fois appliqué DATE_ADD() dans MySQL

select lastname, 
    date_add(changedat, interval -24 hour) as newdate
from employee_audit;

nom de famille y changé à est le nom du champ et audit_des_employés est le nom de la table. enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X