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