首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按年和月排序

按年和月排序
EN

Stack Overflow用户
提问于 2019-11-15 02:51:32
回答 3查看 44关注 0票数 0

我正在尝试从一个日期列中按年和月订购,该列具有YYYY-MM-DD。

下面是我的代码示例:

代码语言:javascript
运行
复制
SELECT * FROM (
    SELECT CONCAT(YEAR([DATE]), '-', MONTH([DATE])) AS 'YM' FROM randomTable WHERE [DATE] IS NOT NULL
)sub1
GROUP BY sub1.YM
ORDER BY SUB1.YM asc

这不是很有效,但已经很接近了,我正在

2017-11 2018-10 2018-11 2018-12 2018-3 2018-4 2018-5 2018-6 2018-8 2018-9 2019-1 2019-10 2019-11 2019-2 2019-3 2019-4 2019-5 2019-6 2019-7 2019-8 2019-9

问题出在2019-10 2019-112018-10 2018-11 2018-12。我如何才能让它正常工作,这样才能正确地排序?

EN

回答 3

Stack Overflow用户

发布于 2019-11-15 02:52:46

保留[DATE]并将其用于排序如何?

代码语言:javascript
运行
复制
SELECT sub1.YM
FROM (SELECT CONCAT(YEAR([DATE]), '-', MONTH([DATE])) AS YM, [DATE]
      FROM randomTable
      WHERE [DATE] IS NOT NULL
     ) sub1
GROUP BY sub1.YM
ORDER BY MIN([DATE]);
票数 0
EN

Stack Overflow用户

发布于 2019-11-15 02:58:51

这是因为YM是文本,按字母顺序“2019-10”在“2019-2”之前。

但这很容易解决。

代码语言:javascript
运行
复制
SELECT sub1.YM 
FROM (
    SELECT FORMAT([DATE],'yyyy-MM') AS [YM]
    FROM randomTable 
    WHERE [DATE] IS NOT NULL
) sub1
GROUP BY sub1.YM
ORDER BY sub1.YM asc

然后“2019-10”在“2019-02”之后。

顺便说一句,这个查询可以缩短。

代码语言:javascript
运行
复制
SELECT FORMAT([DATE],'yyyy-MM') AS [YM]
FROM randomTable
WHERE [DATE] IS NOT NULL
GROUP BY FORMAT([DATE],'yyyy-MM')
ORDER BY [YM]
票数 0
EN

Stack Overflow用户

发布于 2019-11-15 03:41:57

以下是您要查找的内容:

代码语言:javascript
运行
复制
     SELECT distinct CAST( YEAR([DATE]) AS varchar)  + '-' + CAST( month([DATE]) AS 
     varchar) AS 'YM', year([DATE])as 'Y',MONTH([DATE]) as 'M'
     FROM randomTable  WHERE [DATE] IS NOT NULL order by Y,M
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58863896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档