2012-05-02 104 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