MySQL选择日期

时间:2012-05-02 07:54:21

标签: php mysql

关于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

谢谢

3 个答案:

答案 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