mysql заявление о дате последнего месяца

У меня есть DATE, как я могу написать, where это проверяется за последний месяц до настоящего времени (либо первый, либо только сегодняшний день -1 месяц)?

 SELECT * FROM table WHERE dateField > DATE_SUB(NOW(), INTERVAL 1 MONTH) 

Это выбирает все строки, которые имеют dateField более недавнее, чем текущая временная метка минус один месяц (так, например, данный сегодня – 26 сентября 2009 года 00:56, это даст строки, которые являются более свежими, чем 26 августа 2009 года 00:56)

На самом деле, в прошлом месяце до сих пор было бы:

С начала месяца:

 SELECT * FROM table WHERE date >= DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m-01') AND date <= NOW() 

Так как месяц назад: (надеюсь, у вас нет будущих дат на столе)

 SELECT * FROM table WHERE date >= (CURRENT_DATE - INTERVAL 1 MONTH) 

В качестве альтернативы вам может понадобиться только последний месяц … Скажите сегодня, что сентябрь, и вы хотите весь август, не включая сентябрь … Это то, что я понимаю как «в прошлом месяце».

 SELECT * FROM table WHERE date >= DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y/%m/01') AND date < DATE_FORMAT(CURRENT_DATE, '%Y/%m/01') 

Вы также можете сделать для того же результата:

 SELECT * FROM table WHERE YEAR(date) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) AND MONTH(date) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)