【发布时间】:2016-05-04 00:24:58
【问题描述】:
在 mySQL 中,我想返回在当年(如 2012 年,而不是在过去一年的时间段内)和(作为单独的查询)具有 start_date 的记录的计数上一年的记录计数(现在的情况是 2011 年)。
我的开始日期是这样存储的:2012-12-02。我正在使用 PHP。
非常感谢帮助我如何形成这些查询。
【问题讨论】:
标签: mysql
在 mySQL 中,我想返回在当年(如 2012 年,而不是在过去一年的时间段内)和(作为单独的查询)具有 start_date 的记录的计数上一年的记录计数(现在的情况是 2011 年)。
我的开始日期是这样存储的:2012-12-02。我正在使用 PHP。
非常感谢帮助我如何形成这些查询。
【问题讨论】:
标签: mysql
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;
【讨论】:
WHERE YEAR(START_DATE) = YEAR(NOW())
as a separate query,因此是这样。让我用逐年计数来更新答案。
两个建议:
您可以使用日期过滤数据:
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(或任何其他高级编程语言),您可以在运行时构建查询字符串以满足您的需求(例如过滤不同年份的记录)。
要显示 2012 年之前 start_date 的记录数,只需更改 where 条件:
select... where year(start_date) < 2012
或
select... where start_date < '2012-01-01'
【讨论】: