0

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

有谁知道用纯 SQL 实现这一点的方法,还是我必须用 php 函数分析数据?

4

3 回答 3

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在字符串的前面和结尾添加括号。

于 2013-11-11T21:43:16.360 回答
3

尝试做:

SELECT YEAR(dateColumn)
FROM yourTable
GROUP BY YEAR
于 2013-11-11T21:40:50.153 回答
3
SELECT DISTINCT YEAR(datecolumn) FROM yourtable
  • YEAR()是一个 MySQL 函数,它将返回与存储在列中的当前日期相对应的年份。
  • SELECT DISTINCT将只返回 的结果的唯一值YEAR(datecolumn)。可以在本教程中找到更多信息

如果您需要在一个 SQL 查询中输出列表本身,Linger 的答案显然是要走的路。

于 2013-11-11T21:41:13.110 回答