以DD / MM / YY格式转换日期并按其订购

时间:2013-08-16 08:59:46

标签: sql sql-server

我有两列的表1)ProductId(int)2)PublishDate(varchar) 数据如下

ProductId   PublishDate
73          22/01/97
56          17/09/90
56          01/09/90
69          15/05/13
69          09/05/13

我必须从这张表中获取记录,但是在PublishDate Order by Desc中, 由于PublishDate是varchar,我无法做到这一点,任何人都可以帮助我。

我尝试过以下查询:

SELECT T.ProductId,
       T.MYDATE
FROM
(
SELECT     ProductId, CONVERT(varchar(max), PublishDate , 101) AS MYDATE
FROM         DateValidation

) T
ORDER BY T.MYDATE DESC

3 个答案:

答案 0 :(得分:3)

哟不需要更改日期格式,因为它以您需要的格式存储(它存储为varchar,这是模式)。

但您的问题是按日期排序。要按日历日期排序,您需要将varchar转换为有效日期

SELECT     ProductId, PublishDate
  FROM     DateValidation
 ORDER BY  CONVERT(DATE, PublishDate, 103) desc

我鼓励您以日期格式存储日期,但varchar。

答案 1 :(得分:0)

<强> Here is the SQLFIddel Demo

下面是您可以尝试的查询

Select ProductId,
       Convert(Date,substring(PublishDate,4,3) + 
                    substring(PublishDate,1,3) + 
                    substring(PublishDate,7,2))               
  From DateValidation
 Order By 2 Desc

答案 2 :(得分:0)

试试这个

SELECT ProductId,CONVERT(date,PublishDate,3)
FROM DateValidation 
order by 2 desc