0

我的表有两列 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
4

3 回答 3

3

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

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

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

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

于 2013-08-16T09:07:04.440 回答
0

这是 SQLFIddel 演示

以下是您可以尝试的查询

Select ProductId,
       Convert(Date,substring(PublishDate,4,3) + 
                    substring(PublishDate,1,3) + 
                    substring(PublishDate,7,2))               
  From DateValidation
 Order By 2 Desc
于 2013-08-16T09:18:07.267 回答
0

尝试这个

SELECT ProductId,CONVERT(date,PublishDate,3)
FROM DateValidation 
order by 2 desc
于 2013-08-16T09:36:24.320 回答