按转换日期显示和排序的 SQL

Wit*_*lds 2 sql sql-server

是否可以使用 SQL 以新格式显示日期,例如 dd-mm-yyyy,然后按转换后的日期排序?

我试过类似的东西:

SELECT CONVERT(varchar(10), [Date Depart], 105) AS [Date Depart]
FROM FLIGHT
ORDER BY CONVERT(varchar(10), [Date Depart], 105) DESC
Run Code Online (Sandbox Code Playgroud)

它不适用于 MS SQL Server。它仍然按 VARCHAR 排序。

Bri*_*lia 5

按未转换日期排序:

SELECT CONVERT(varchar(10), [Date Depart], 105) AS [Date Departed]
  FROM FLIGHT
 ORDER BY [Date Depart] DESC
Run Code Online (Sandbox Code Playgroud)

即使您在选择列表中选择转换为不同格式的日期,您仍然可以按实际日期字段进行排序。

还将列命名为 [Date Departed],以便 ORDER BY 子句不会认为我指的是列别名,而不是实际的字段名称。ORDER BY 子句会认为您在引用实际字段名称之前引用列别名(如果适用)。因此,如果您按列排序,而该列的别名恰好与表中的实际字段同名,则它将首先按结果列排序,而不是表上的实际字段。

如果您绝对想使用 [Date Depart] 作为列名,则可以使用它:

SELECT CONVERT(varchar(10), [Date Depart], 105) AS [Date Depart]
  FROM FLIGHT
 ORDER BY cast([Date Depart] as date) desc
Run Code Online (Sandbox Code Playgroud)

它将结果列转换回日期。