2016-06-27 2 views
0

Я хочу написать несколько sql-запросов, чтобы показать мне записи из базы данных mysql, которые созданы сегодня, записи, созданные на прошлой неделе, и записи, созданные в прошлом месяце. Первый запрос показать результаты, которые были созданы за последние 7 дней (включая сегодня). Например, если сегодня воскресенье, я хочу увидеть результаты, созданные с понедельника по субботу (а не сегодня). Аналогично, во втором запросе я хочу видеть записи, созданные в прошлом месяце (за исключением записей этого месяца). Например, если это июнь, я хочу видеть записи, созданные в маеsql-запрос, чтобы показать записи, созданные сегодня, на прошлой неделе и в прошлом месяце

SELECT COUNT(*) AS stdtotal FROM `login` 
WHERE `account_created_date` > DATE_SUB(NOW(), INTERVAL 7 DAY) 

и другой запрос является

SELECT COUNT(*) AS stdtotal FROM `login` 
WHERE `account_created_date` > DATE_SUB(NOW(), INTERVAL 30 DAY) 

Обратите внимание, что мое имя таблицы login и имя столбца account_created_date типа Дата.

+0

В чем проблема. У вас есть результат, как вы ожидали. –

+0

Первый запрос покажет мне результаты, созданные за последние 7 дней (в том числе и сегодня). Например, если сегодня воскресенье, я хочу увидеть результаты, созданные с понедельника по субботу. Аналогично, во втором запросе я хочу видеть записи, созданные в прошлом месяце (за исключением записей этого месяца). Например, если это июнь, я хочу увидеть записи, созданные в мае. –

+0

Итак, вы должны использовать 'WHERE SomeDateField BETWEEN OneDate AND SecondDate'. –

ответ

1

Просто исправьте положения where. За последние 7 дней:

WHERE account_created_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND 
     account_created_date < CURDATE() 

За предыдущий месяц:

WHERE account_created_date >= DATE_SUB(DATE_SUB(CURDATE(), INTERVAL DAY(CURDATE) - 1 DAY), INTERVAL 1 MONTH) AND 
     account_created_date < DATE_SUB(CURDATE(), INTERVAL DAY(CURDATE) - 1 DAY) 

Это вычисляет первый день текущего месяца, а затем идет один месяц до этого.

+0

вы можете помочь мне показать записи, созданные в этом месяце? –

+0

'WHERE account_created_date> = DATE_SUB (CURDATE(), INTERVAL DAY (CURDATE) - 1 день)'. –