2012-05-02 71 views
-2

关于MySQL的选择日期最新 我的DataTableMySQL的选择日期最新

表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 

谢谢

回答

1

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

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

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

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

似乎很简单 - 从升序日期顺序数据库中选择您的日期,然后在每个记录循环(使用本地时间或其他时间的功能之一在那里你可以得到月份),将日期存储在一个字符串中,直到找到具有不同月份/年份的记录,然后打印该月份的字符串并为该月份开始一个新的字符串。

大概也值得使用从PHP之日起的名字来避免日期的名字,如 '的Fab' :)

+0

我只想使用MySQL。 嗯。 – aCmySQL

+0

那么为什么你在标签中添加PHP? – Woody

+0

因为,我只想使用mySQL。 – aCmySQL

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