MYSQL查询哪些年份有记录

时间:2013-11-11 21:39:17

标签: php mysql sql

我有一个带有日期字段的表,我需要找出哪些年份有记录并仅输出年份列表,例如([2011,2012,2013]),我想象的唯一方法是获取所有行然后在php循环中进行分析。

有没有人知道用纯SQL实现这个目的的方法,还是我必须用php函数分析数据?

3 个答案:

答案 0 :(得分:3)

尝试做:

SELECT YEAR(dateColumn)
FROM yourTable
GROUP BY YEAR

答案 1 :(得分:3)

SELECT DISTINCT YEAR(datecolumn) FROM yourtable
  • YEAR()是一个MySQL函数,它将返回与列中存储的当前日期相对应的年份。
  • SELECT DISTINCT将仅返回YEAR(datecolumn)结果的唯一值。有关详细信息,请参阅此tutorial

如果您需要在一个SQL查询中输出列表本身Linger's answer显然是可行的方法。

答案 2 :(得分:3)

您声明要包含 [2011,2012,2013] 等列表。以下SQL Fiddle演示了如何在一个领域实现这样的目标:

SELECT CONCAT('[', GROUP_CONCAT(MQ.MyYear), ']') AS YearsList
FROM 
(
  SELECT DISTINCT YEAR(MyDateField) AS MyYear 
  FROM MyTable
) AS MQ

在上面的示例中,我使用子查询来获取表中找到的所有唯一年份。然后我使用GROUP_CONCAT将它们组合在一起,每年用,分隔。然后我使用CONCAT在字符串的前端和末尾添加括号。