Mysql
 sql >> Database >  >> RDS >> Mysql

Interrogazione della data nell'ora corrente mysql

La tua espressione ADDDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), 6-WEEKDAY(curdate())) restituisce solo una parte della data dell'ultimo giorno della settimana, quindi tutti i dati dopo l'inizio di questo giorno non sono inclusi.

Hai un paio di opzioni per risolvere questo problema:

  1. Round creato ad oggi senza parte temporale:
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. Utilizza una condizione forte meno con il giorno successivo:
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()));