Si j'ai une date comme celle-ci:
'2013-03-25'
Et je veux écrire une requête MySQL avec WHERE
c'est "hier", comment puis-je le faire?
Un moyen simple de connaître la date d'hier consiste à utiliser subdate()
function:
subdate(currentDate, 1)
Cela devrait le faire:
WHERE `date` = CURDATE() - INTERVAL 1 DAY
Je dois toujours me référer à un extrait de code pour comprendre cela à nouveau.
Il est habituel de stocker les dates/heures UTC dans la base de données. Mais généralement, lors de la génération de rapports, les heures doivent être ajustées pour un fuseau horaire spécifique.
Voici l'extrait que j'utilise pour montrer la sélection d'hier, ajustée pour l'heure du Pacifique:
SET @date_start = DATE_SUB((CURDATE() - INTERVAL 1 DAY), INTERVAL 8 HOUR);
SET @date_end = DATE_SUB(CURDATE(), INTERVAL 8 HOUR);
SELECT
projects.token,
projects.created_at as 'UTC created_at',
DATE_SUB(projects.created_at, INTERVAL 8 HOUR) as 'Pacific created_at'
FROM
projects
WHERE
projects.created_at BETWEEN @date_start AND @date_end;
Remarque: J'ai défini les variables dans l'extrait pour qu'il soit plus facile à regarder. Lorsque j'écris la dernière requête, je n'utilise généralement pas les variables.
Je pense que tu cherches:
DATE_ADD(date_column, INTERVAL -1 DAY)
voir https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html