-2

关于 MySQL select date to date 我有数据表

表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

或者

 DATE
--------------------
 01-01-2012,12-01-2012,20-01-2012
 03-02-2012,13-02-2012,14-02-2012 
 05-03-2012

谢谢

4

3 回答 3

1

对于第二种形式,您可以结合GROUP_CONCAT()and GROUP BY

SELECT   DATE_FORMAT(`DATE`, '%b %Y') AS Month
  ,      GROUP_CONCAT(`DATE`)         AS Dates
FROM     `table`
GROUP BY Month

对于第一种形式,您可以使用DAY()within GROUP_CONCAT()

SELECT   DATE_FORMAT(`DATE`, '%b %Y') AS Month
  ,      GROUP_CONCAT(DAY(`DATE`))    AS Dates
FROM     `table`
GROUP BY Month
于 2012-05-02T08:13:04.920 回答
0

似乎很容易 - 从数据库中按日期升序选择日期,然后循环遍历每条记录(使用本地时间或可以获取月份的其他时间函数之一),将日期存储在字符串中,直到找到带有不同的月份/年份,然后打印该月份字符串并为该月份开始一个新的字符串。

可能还值得使用 PHP 中的日期名称来避免像“Fab”这样的日期名称:)

于 2012-05-02T08:00:35.753 回答
0
SELECT GROUP_CONCAT(DATE SEPARATOR ',') FROM TABLEA

或者

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
于 2012-05-02T08:08:23.533 回答