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

MySQL sélectionne toutes les lignes du mois dernier jusqu'à (maintenant() - 1 mois), à des fins de comparaison

Vous pouvez obtenir le premier du mois en calculant le dernier jour du mois précédent et en ajoutant un jour. C'est gênant, mais je pense que c'est mieux que de formater une date en tant que chaîne et de l'utiliser pour le calcul.

select 
  *
from
  yourtable t
where
  /* Greater or equal to the start of last month */
  t.date >= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY) and
  /* Smaller or equal than one month ago */
  t.date <= DATE_SUB(NOW(), INTERVAL 1 MONTH)