web-dev-qa-db-fra.com

MySQL choisit la date d'hier

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?

11
Richard Rodriguez

Un moyen simple de connaître la date d'hier consiste à utiliser subdate() function:

subdate(currentDate, 1)
20
Simon Dorociak

Cela devrait le faire:

WHERE `date` = CURDATE() - INTERVAL 1 DAY
27
John Conde

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.

1
Elliot Larson

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

1
Kris