首页 >数据库 >mysql教程 >如何以自定义'月-年”格式按月和年对 SQL 数据进行分组?

如何以自定义'月-年”格式按月和年对 SQL 数据进行分组?

Susan Sarandon
Susan Sarandon原创
2024-12-29 00:30:10315浏览

How Can I Group SQL Data by Month and Year in a Custom

以自定义格式按月和年进行 SQL 分组

在 SQL 中使用时间戳时,按特定对数据进行分组非常有用间隔,例如几个月或几年。但是,DATE 或 TIMESTAMP 数据类型的默认格式可能并不总是与所需的表示形式一致。在这方面,一个常见的挑战是以自定义格式显示日期,例如“月-年”。

考虑以下 SQL 查询:

SELECT MONTH(date) + '.' + YEAR(date) AS Mjesec,
       SUM(marketingExpense) AS SumaMarketing,
       SUM(revenue) AS SumaZarada 
FROM [Order]
WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3')
GROUP BY MONTH(date), YEAR(date)

此查询将按月和年显示数据,并显示营销费用和收入的合计金额。但是,第一列“Mjesec”当前仅显示月份,例如“9”。要修改输出以显示“月-年”,需要结合使用转换和字符串连接。

一种方法是将月份和年份值转换为字符串,然后手动连接它们:

SELECT CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4)) AS Mjesec,
       SUM(marketingExpense) AS SumaMarketing,
       SUM(revenue) AS SumaZarada 
FROM [Order]
WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3')
GROUP BY CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4))

这将输出所需的“月-年”格式,例如“9-2011”。或者,按照 40-Love 的建议,可以使用前导零执行转换,从而产生以下 GROUP BY 子句:

GROUP BY 
  CAST(YEAR(date) AS VARCHAR(4)) + '-' + right('00' + CAST(MONTH(date) AS VARCHAR(2)), 2) 

此变体添加前导零以确保月份始终显示为两个- 数字。

以上是如何以自定义'月-年”格式按月和年对 SQL 数据进行分组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn