首页 > 解决方案 > 如何将日期时间的转换存储在具有新列名的新列中,可以在其上使用 ORDER BY?

问题描述

我有一个日期时间列,我想从此列中删除重复的“日期”。

我现有列的数据类型是 datetimeoffset(7):

2018-06-17 00:44:13.0000000 +00:00

我现在可以像这样提取日期:

SELECT CONVERT(VARCHAR(10), mytimestamp_column, 102) FROM [dbo].[myTable] 
where mycondition = 1223445

这给了我一个这样的专栏:

(No column name)
2018.06.18
2018.06.17
2018.06.16
.... and so on

现在我试图给这个新列一个名字,所以我可以在这个列上使用“ORDER BY”来对结果进行排序。第一个问题,我该怎么做,我正在尝试以下并得到语法错误:

select newcolumn from(
(SELECT CONVERT(VARCHAR(10), mytimestamp_column, 102) FROM [dbo].[myTable] 
where mycondition = 1223445) as newcolumn
order by newcolumn desc

第二个问题:我如何以简单的方式从结果集中删除重复的日期,我试图避免冗长而复杂的表达式/公式?

tnx :)

标签: sqlsql-server

解决方案


只需按数量/列或别名直接订购:

SELECT
    CONVERT(VARCHAR(10), mytimestamp_column, 102) AS col
FROM [dbo].[myTable] 
WHERE mycondition = 1223445
ORDER BY
    col DESC;

你真的不需要在这里进行子查询。


推荐阅读