【发布时间】:2022-01-08 19:54:13
【问题描述】:
我在按正确顺序排序数据时遇到问题。
我尝试了几种不同的组合,但它们都以错误的方式返回数据。
日期列采用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)
返回数据为:
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')
返回相同的结果。
但我想要的是:
01.01.2021
02.01.2021
03.01.2021
01.02.2021
等等。我真的不知道为什么它将所有月份分组然后按天排序。
【问题讨论】:
-
如果
[date](你真的应该重命名)是date/datetime数据类型,你为什么不按它排序呢?ORDER BY [date] -
我以 MM-dd-yyyy HH:mm:ssss 日期时间格式接收它,所以我将其转换
-
datetime没有格式,您在屏幕上看到的是基于本地设置的表示。无论如何,如果要对日期进行排序,请确保它是正确的数据类型。 -
是的,但我正在使用 API,所以我需要它按照设置的方式工作......不是我自己的本地设置
-
另外,
FORMAT是性能杀手
标签: sql tsql datetime sql-order-by