在 mySQL 中,我想返回start_date
在当年(如 2012 年,而不是在过去一年时间段内)的记录计数和(作为单独的查询)来自前一年(现在的情况是 2011 年)。
我的开始日期是这样存储的:2012-12-02
。我正在使用 PHP。
非常感谢我如何形成这些查询的帮助。
在 mySQL 中,我想返回start_date
在当年(如 2012 年,而不是在过去一年时间段内)的记录计数和(作为单独的查询)来自前一年(现在的情况是 2011 年)。
我的开始日期是这样存储的:2012-12-02
。我正在使用 PHP。
非常感谢我如何形成这些查询的帮助。
SELECT COUNT(*)
FROM TABLE1
WHERE YEAR(START_DATE) = YEAR(CURDATE());
您可能希望使用YEAR函数从日期中获取 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(或任何其他高级编程语言),您可以在运行时构建您的查询字符串以满足您的需求(例如过滤不同年份的记录)。
要显示 2012 年之前的记录数start_date
,只需更改where
条件:
select... where year(start_date) < 2012
或者
select... where start_date < '2012-01-01'