SQL:按日期排序,仅给出月份和年份 - 完整组

时间:2018-02-23 02:39:03

标签: mysql sql date group-by sql-order-by

我有一个SQL数据库,在模式下设置为完整组。我的目标是获得每个月的行数(ID' s)。这就是我说Group By Datum的原因。由于完整的群组模式,我不能简单地说Order By created_at。因为我只选择了%m.%Y。因此,我只能使用Datum来处理我的月份和年份。

我已经尝试连接这些值,例如CONCAT('DATE_FORMAT(created_at, '%Y-%m'), "-01 00:00:00"),但这也不起作用......即使我将其转换为UNIX时间戳,它也不起作用:UNIX_TIMESTAMP(CONCAT('DATE_FORMAT(created_at, '%Y-%m'), "-01 00:00:00"))

我甚至试过这个: Order By Year(DATE_FORMAT(created_at, '%Y')), Month DATE_FORMAT(created_at, '%m')但它也不起作用......

如何在不更改Select值的情况下按月和年对结果进行排序? Sofar这是我的实际SQL查询。也没有工作..我几乎试图找到解决方案1小时......

SELECT COUNT(ID) AS Anzahl, DATE_FORMAT(created_at, '%m.%Y') AS Datum FROM leads WHERE created_at >= '2015-01-01' AND created_at <= '2018-01-01' AND shopID = 4184 GROUP BY Datum ORDER BY UNIX_TIMESTAMP(STR_TO_DATE(Datum, '%Y-%m-01 00:00:00'))

我会感激任何帮助!不,我无法更改Select值或关闭full_group_mode

2 个答案:

答案 0 :(得分:2)

ORDER BY DATE_FORMAT(created_at,'%Y'),date_format(created_at,'%M')desc

这将按年升序然后按月降序对结果进行排序。

查看此SQL Fiddle以查看使用MySql 5.6的查询

答案 1 :(得分:2)

以下将按年份和月份按升序排序:

order by substring(datum,4,4), substring(datum,1,2)

sqlfiddle:http://sqlfiddle.com/#!9/16fab4/3