关于MySQL选择日期 我有数据表
表A
ID | DATE
-----------------
1 | 2012-01-01
2 | 2012-01-12
3 | 2012-01-20
4 | 2012-02-03
5 | 2012-02-13
6 | 2012-02-14
7 | 2012-04-05
我想这样表现出来。 我想只使用MySQL。
DATE
--------------------
01,12,20 Jan 2012
03,13,14 Fab 2012
05 Apr 2012
OR
DATE
--------------------
01-01-2012,12-01-2012,20-01-2012
03-02-2012,13-02-2012,14-02-2012
05-03-2012
谢谢
答案 0 :(得分:1)
对于第二种表单,您可以合并GROUP_CONCAT()
和GROUP BY
:
SELECT DATE_FORMAT(`DATE`, '%b %Y') AS Month
, GROUP_CONCAT(`DATE`) AS Dates
FROM `table`
GROUP BY Month
对于第一个表单,您可以在DAY()
中使用GROUP_CONCAT()
:
SELECT DATE_FORMAT(`DATE`, '%b %Y') AS Month
, GROUP_CONCAT(DAY(`DATE`)) AS Dates
FROM `table`
GROUP BY Month
答案 1 :(得分:0)
看起来非常简单 - 按升序日期顺序从数据库中选择日期,然后循环浏览每条记录(使用本地时间或其他时间函数,您可以获取月份),将日期存储在字符串中,直到找到记录具有不同月份/年份,然后打印该月份字符串并开始该月份的新字符串。
也许还值得使用PHP中的日期名称来避免像'Fab'这样的日期名称:)
答案 2 :(得分:0)
SELECT GROUP_CONCAT(DATE SEPARATOR ',') FROM TABLEA
OR
select CONCAT_WS(' ',GROUP_CONCAT(a.day1 SEPARATOR ','),a.month1,a.year1) as `DATE` from (select DAY(`DATE`) as day1,DATE_FORMAT(`DATE`,'%b') as month1, YEAR(`DATE`) as year1 from TABLEA) a group by a.month1, a.year1