我有一个视图,列出在线日历中的可用日期(基本上,我创建了所有可用日期的条目,然后将其与已预订的日期进行比较 - 然后视图显示'AvailableDates'中的所有日期'日期'<>'BookedDate'。
到目前为止,我可以让它运行一个看起来像这样的列表....
24th January 2014
7th February 2014
8th February 2014
....但是这会占用大量空间,并且可以将列表复制并粘贴到电子邮件/消息中以供快速参考。
我正在寻找的是一种对日期进行分组的方法,以便输出看起来像这样......
Jan - 24th
Feb - 7th, 8th
...所以最多有12行。
有人能告诉我怎么做吗? - 该字段是“日期”类型。
谢谢,
的Darren
答案 0 :(得分:2)
您可能也希望将年份放在那里,否则您可能会得到错误的结果。
SELECT
YEAR(your_column) AS the_year,
DATE_FORMAT(your_column, '%b') AS the_month_abbreviated,
GROUP_CONCAT(DATE_FORMAT(your_column, '%D') ORDER BY DAY(your_column) SEPARATOR ', ') AS the_days
FROM your_table
GROUP BY YEAR(your_column), DATE_FORMAT(your_column, '%b')
ORDER BY YEAR(your_column), MONTH(your_column)
答案 1 :(得分:0)
您必须将datecolumn转换为month并使用GROUP_CONCAT()。也许这可以起作用或者至少在正确的方向上起作用。
SELECT
LEFT(monthname(datecolumn),3),GROUP_CONCAT(DAY(datecolumn))
FROM table
GROUP BY CONCAT(YEAR(datecolumn),MONTH(datecolumn))
错过格式化DAY。现在修好了
答案 2 :(得分:0)
SELECT
MONTH(`d`),
GROUP_CONCAT(DAY(`d`))
FROM
a
GROUP BY
YEAR(`d`),
MONTH(`d`)