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

时间:2014-07-27 17:28:02

标签: 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

它无法在MS SQL Server上运行。它仍然按VARCHAR排序。

2 个答案:

答案 0 :(得分:4)

按未转换日期排序:

SELECT CONVERT(varchar(10), [Date Depart], 105) AS [Date Departed]
  FROM FLIGHT
 ORDER BY [Date Depart] DESC

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

还将列命名为[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

它将结果列转换回日期。

答案 1 :(得分:1)

您可以使用表格别名按原始日期订购:

SELECT CONVERT(varchar(10), [Date Depart], 105) AS [Date Depart]
FROM FLIGHT
ORDER BY FLIGHT.[Date Depart] DESC;