2013-08-16 56 views
0

我有具有表2米欄1)產品編號(INT)2)PublishDate(VARCHAR) 數據是像以下通過它在DD/MM/YY甲酸鹽和順序轉換日期

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

我得記錄從這張表,但在PublishDate訂單由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

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 
3

喲不需要更改日期格式,因爲它是存儲在您需要的格式(它被存儲爲varchar,這是一個模式)。

但是你的問題是按日期排序。要通過日曆日期排序你需要爲varchar轉換爲有效日期

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

我鼓勵你來存儲日期日期格式,但VARCHAR。

+0

這是兩個答案的更好,因爲它修復底層問題 - 將日期存儲爲varchar。唯一的問題可能是如果原始模式不能被修改,在這種情況下,其他答案可能是有用的......但它仍然讓我畏縮思考存儲爲字符串的日期! – Charleh

0

嘗試這個

SELECT ProductId,CONVERT(date,PublishDate,3) 
FROM DateValidation 
order by 2 desc 
相關問題