Ответ 1
SELECT COUNT(*)
FROM TABLE1
WHERE YEAR(START_DATE) = YEAR(CURDATE());
В mySQL я хотел бы вернуть количество записей, которые имеют start_date
в текущем году (как в 2012 году, а не в течение последнего одного года) и (в качестве отдельного запроса) количество записей за предыдущий год (2011 год в случае, как сейчас).
Мои начальные даты сохраняются таким образом: 2012-12-02
. Я использую PHP.
Помощь в том, как я буду формировать эти запросы, будет чрезвычайно оценена.
SELECT COUNT(*)
FROM TABLE1
WHERE YEAR(START_DATE) = YEAR(CURDATE());
Вы можете использовать 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;
Два предложения:
Вы можете отфильтровать свои данные, используя даты:
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'