SQL 按格式为 dd.MM.yyyy 的日期时间排序不正确
SQL order by datetime formatted as dd.MM.yyyy is incorrect
我在按正确顺序排序数据时遇到问题。
我尝试了几种不同的组合,但它们都以错误的方式 return 数据。
日期列采用 datetime
格式。
我试过的一些代码:
SELECT CONVERT(VARCHAR(10), recievedDate, 104) as day
FROM table
GROUP BY CONVERT(VARCHAR(10), recievedDate, 104)
ORDER BY CONVERT(VARCHAR(10), recievedDate, 104)
Returns 数据为:
01.02.2021
01.03.2021
01.04.2021
02.02.2021
02.03.2021
...
我试过:
SELECT FORMAT(CONVERT(DATETIME, CONVERT(VARCHAR(10), recievedDate, 121)),'dd.MM.yyyy')
FROM table
GROUP BY FORMAT(CONVERT(DATETIME, CONVERT(VARCHAR(10), recievedDate, 121)),'dd.MM.yyyy')
ORDER BY FORMAT(CONVERT(DATETIME, CONVERT(VARCHAR(10), recievedDate, 121)),'dd.MM.yyyy')
其中 return 结果相同。
但我想要的是:
01.01.2021
02.01.2021
03.01.2021
01.02.2021
等等。我真的不知道为什么它把所有的月份都分组然后按天排序。
通过转换为 date
对 datetime
进行分组,并在 分组后格式化日期 :
SELECT CONVERT(VARCHAR(10), CONVERT(date, recievedDate), 104)
FROM t
GROUP BY CONVERT(date, recievedDate)
ORDER BY CONVERT(date, recievedDate)
我在按正确顺序排序数据时遇到问题。
我尝试了几种不同的组合,但它们都以错误的方式 return 数据。
日期列采用 datetime
格式。
我试过的一些代码:
SELECT CONVERT(VARCHAR(10), recievedDate, 104) as day
FROM table
GROUP BY CONVERT(VARCHAR(10), recievedDate, 104)
ORDER BY CONVERT(VARCHAR(10), recievedDate, 104)
Returns 数据为:
01.02.2021
01.03.2021
01.04.2021
02.02.2021
02.03.2021
...
我试过:
SELECT FORMAT(CONVERT(DATETIME, CONVERT(VARCHAR(10), recievedDate, 121)),'dd.MM.yyyy')
FROM table
GROUP BY FORMAT(CONVERT(DATETIME, CONVERT(VARCHAR(10), recievedDate, 121)),'dd.MM.yyyy')
ORDER BY FORMAT(CONVERT(DATETIME, CONVERT(VARCHAR(10), recievedDate, 121)),'dd.MM.yyyy')
其中 return 结果相同。
但我想要的是:
01.01.2021
02.01.2021
03.01.2021
01.02.2021
等等。我真的不知道为什么它把所有的月份都分组然后按天排序。
通过转换为 date
对 datetime
进行分组,并在 分组后格式化日期 :
SELECT CONVERT(VARCHAR(10), CONVERT(date, recievedDate), 104)
FROM t
GROUP BY CONVERT(date, recievedDate)
ORDER BY CONVERT(date, recievedDate)