mysql - Mysql - 从数据库日期创建分组数据列表

标签 mysql sql date

我有一个 View ,列出了在线日历中的可用日期(基本上,我为所有可用日期创建了条目,然后将其与已预订的日期进行比较 - 然后该 View 显示“AvailableDates”中的所有日期,其中“日期' <> '预订日期'。

到目前为止,我可以让它运行一个如下所示的列表....

24th January 2014
7th February 2014
8th February 2014

...但这会占用大量空间,而且我们的想法是可以将该列表复制并粘贴到电子邮件/消息中以供快速引用。

我正在寻找一种对日期进行分组的方法,以便输出看起来像这样......

Jan - 24th
Feb - 7th, 8th

...因此最多有 12 行。

有人可以告诉我该怎么做吗? - 该字段是“日期”类型。

谢谢

达伦

最佳答案

您可能也想在其中包含年份,否则您可能会得到错误的结果。

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)
  • 您可以阅读有关 DATE_FORMAT() 函数的更多信息 here .
  • 看到它在 中实时运行 sqlfiddle

关于mysql - Mysql - 从数据库日期创建分组数据列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21115255/

相关文章:

mysql - 按序列号分组的日期选择最新条目

python - jdbc.SQLServerException : The "variant" data type is not supported

sql - 是否可以在每个唱片标签上使用 PG 序列?

javascript - 使用 SQLite 插入/读取 Base64 字符串

php - 在 mysql 中更新页面 View

mysql - 如何在 MySQL 中用下一个更新当前行?

date - 在精确范围内查询最大日期并获取结果中的选定字段

SQL 使用 Oracle SQL 对日历周期进行排序

当我尝试运行查询时,MySQL 抛出错误 1111,如何修复我的 group by 和having 子句?

ruby - 在 ruby​​ 中创建两个日期之间的月份范围