Mysql 从DATETIME字段中选择最常用的月份

Mysql 从DATETIME字段中选择最常用的月份,mysql,sql,Mysql,Sql,是否可以在所有行中选择最常见和最不常见的月份? 假设我有一个包含以下值的列date: | date | ------------------- 2016-01-21 01:51:21 2015-05-21 01:51:21 2015-04-21 01:51:21 2014-05-21 01:51:21 2016-05-21 01:51:21 2015-04-21 01:51:21 因此,我们的想法是从这个表中选择最常见和最不常见的月份。所以第一次是五月

是否可以在所有行中选择最常见和最不常见的月份?
假设我有一个包含以下值的列date:

|       date        |
 -------------------
 2016-01-21 01:51:21
 2015-05-21 01:51:21
 2015-04-21 01:51:21
 2014-05-21 01:51:21
 2016-05-21 01:51:21 
 2015-04-21 01:51:21
因此,我们的想法是从这个表中选择最常见和最不常见的月份。所以第一次是五月(出现三次),第二次是一月(只出现一次)。用一个简单的查询就可以做到这一点吗?

将日期拆分为3个独立的列(年、月和日)是否更好,因为从该日期开始的一年中我需要相同的内容。

您可以按以下方式分组和计数行:

SELECT month("date"), count(*)
  FROM "table"
 GROUP BY month("date");

您可以按以下方式分组和计数行:

SELECT month("date"), count(*)
  FROM "table"
 GROUP BY month("date");

此脚本应提供每个月的计数

    SELECT DATEPART(mm, date) month
            ,COUNT(DATEPART(mm, date)) monthCount
    FROM [YourTable]

    GROUP BY DATEPART(mm, date)

此脚本应提供每个月的计数

    SELECT DATEPART(mm, date) month
            ,COUNT(DATEPART(mm, date)) monthCount
    FROM [YourTable]

    GROUP BY DATEPART(mm, date)

“将日期拆分为3个独立的列是否更好”几乎可以肯定不是-有很多方法可以分解日期,因此不值得冒数据不同步的风险。如果能让查询更干净一点的话,我最多可以添加计算列?Oracle、MS SQL Server、MySQL?许多供应商都有自己的日期函数。@TomH我使用的是MySQL。一般来说,我会按月分组(使用任何合适的日期函数),按计数排序并得到第一行和最后一行。@DStanley我不太擅长SQL,所以举个例子会很有帮助。“将日期拆分为3列是否更好?”几乎可以肯定不是——有很多方法可以分解日期,因此不值得冒数据不同步的风险。如果能让查询更干净一点的话,我最多可以添加计算列?Oracle、MS SQL Server、MySQL?许多供应商都有自己的日期函数。@TomH我使用的是MySQL。通常我会按月分组(使用任何合适的日期函数),按计数排序并获取第一行和最后一行。@DStanley我对SQL不是很在行,所以举个例子会有帮助。它实际上给了我一个致命的错误,说函数DATEPART不存在。啊,对不起,我没有注意到你在MySQL中。这是针对Microsoft T-SQL的。谢谢你让我知道!它实际上给了我一个致命的错误,说函数DATEPART不存在。啊,对不起,我没有注意到你在MySQL中。这是针对Microsoft T-SQL的。谢谢你让我知道!