Подтвердить что ты не робот

Вернуться все записи mySQL за текущий год

В mySQL я хотел бы вернуть количество записей, которые имеют start_date в текущем году (как в 2012 году, а не в течение последнего одного года) и (в качестве отдельного запроса) количество записей за предыдущий год (2011 год в случае, как сейчас).

Мои начальные даты сохраняются таким образом: 2012-12-02. Я использую PHP.

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

4b9b3361

Ответ 1

SELECT COUNT(*)
 FROM TABLE1
 WHERE YEAR(START_DATE) = YEAR(CURDATE()); 

Ответ 2

Вы можете использовать YEAR функцию, чтобы получить ГОД с даты и использовать то же самое в сравнении.

 SELECT COUNT(*)
 FROM TABLE1
 WHERE YEAR(START_DATE) = 2012;

Разделите запрос из предыдущего года:

 SELECT COUNT(*)
 FROM TABLE1
 WHERE YEAR(START_DATE) = 2011;

Чтобы получить год мудрого подсчета:

 SELECT COUNT(b.YEAR), b.YEAR
 FROM TABLE1 AS a JOIN 
    (SELECT DISTINCT YEAR(START_DATE) AS YEAR from TABLE1) AS b
    ON YEAR(START_DATE) = b.YEAR
 GROUP BY b.YEAR;

Ответ 3

Два предложения:

Вы можете отфильтровать свои данные, используя даты:

select count(*) from tbl where start_date >= '2012-01-01'

или

select count(*) from tbl where start_date between '2012-01-01' and '2012-12-31'

Кроме того, вы можете отфильтровать свои данные с помощью функции year():

select count(*) from tbl where year(start_date) = 2012

Надеюсь, это поможет вам


Если вы используете PHP (или любой другой язык программирования высокого уровня), вы можете построить свою строку запроса во время выполнения в соответствии с вашими потребностями (например, фильтровать записи из разных лет).

Чтобы показать количество записей с start_date до 2012 года, просто измените условия where:

select... where year(start_date) < 2012

или

select... where start_date < '2012-01-01'