对varchar转换的datetime列进行排序

时间:2015-02-27 06:47:48

标签: sql sql-server sql-server-2005

我有一个datetime列,日期显示为“11/13/2012 1:48:27 PM”我需要将其转换为“11/13/12”。

我知道我可以使用

转换它
convert(varchar(10), datevalue, 1)

但是当我在转换后对列进行排序时,它不按日期排序。我不确定convert(datetime, datevalue, 1)是否应该做任何事情,但没有事情发生,我仍然有默认的日期值。

我试过这个

select convert(varchar(10), datevalue, 1) 
from table 
order by convert(datetime, datevalue, 1) desc

它可以工作,但我的更大的查询选择不同,我收到错误

  

如果指定了SELECT DISTINCT,则ORDER BY项必须出现在选择列表中

3 个答案:

答案 0 :(得分:0)

尝试类似:

SELECT CONVERT(varchar(10), datevalue, 1) 
FROM table 
ORDER BY datevalue desc

答案 1 :(得分:0)

试试这个:

SELECT CONVERT(DATETIME, datevalue, 103) 
FROM table
ORDER BY CONVERT(DATETIME, datevalue, 103) 

答案 2 :(得分:0)

select convert(varchar(10), datevalue, 1) 
from table 
order by datevalue desc

您不需要在order by声明中转换日期。只有列名称的数据类型为' datetime'