Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête de la date actuelle dans le temps mysql

Votre expression ADDDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), 6-WEEKDAY(curdate())) ne renvoie qu'une partie de la date du dernier jour de la semaine, donc toutes les données après le début de ce jour ne sont pas incluses.

Vous avez plusieurs options pour résoudre ce problème :

  1. Arrondi créé à ce jour sans partie de temps :
SELECT *
FROM your_table
WHERE DATE(createdAt) BETWEEN 
    SUBDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), WEEKDAY(curdate())) AND
    ADDDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), 6-WEEKDAY(curdate()));
  1. Utilisez une condition moins forte avec le lendemain :
SELECT *
FROM your_table
WHERE 
    createdAt >= SUBDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), WEEKDAY(curdate())) AND
    createdAt < ADDDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), 7-WEEKDAY(curdate()));