2017-10-16 66 views
0

我有一列表updatedDate - 這是一個datetime數據類型。SQL CONVERT到datetime不會改變打印日期格式

數據樣本:

2017-10-15 18:08:22.000 
2017-10-15 18:07:44.000 
2017-10-15 18:07:17.000 
2017-10-15 18:07:10.000 
2017-10-14 18:00:54.000 
2017-10-13 17:59:23.000 
2017-10-13 17:59:13.000 

我想呈現出不同的日期列表,以DD/MM/YYYY的格式,但對我的生活......我不能讓它。我想應該是:

SELECT DISTINCT convert(datetime,updatedDate,103) 
FROM [tblStudentCourses] 
ORDER BY updatedDate DESC 

但它實際上並沒有轉換爲103格式......它只是給它把我當成完整的日期和時間格式最初,沒有任何的轉換。

我想應該是:

15/10/2017 
14/10/2017 
13/10/2017 

我到底做錯了什麼? 謝謝!

+0

如果你只是尋找它在SELECT語句中顯示那樣,然後將其轉換爲varchar(10),而不是日期時間。 – ZLK

+0

然後我得到'Oct 15 201'格式 - 而我需要dd/mm/yyyy – kneidels

+0

...'CONVERT(VARCHAR(10),updatedDate,103)'(你需要在轉換中包含格式if你想要一個特定的格式 - 並轉換爲varchar而不是日期時間將是你想要顯示的日期) – ZLK

回答

2

要以DD/MM/YYYY格式顯示日期,您可以使用CONVERT(VARCHAR(10), DateColumn, 103)

爲了保持正確的順序,你可以把它全部包裝在子查詢中。例如:

SELECT DisplayDate 
FROM (
    SELECT DISTINCT 
     DisplayDate = CONVERT(VARCHAR(10), CAST(UpdatedDate AS DATE), 103), 
     ActualDate = CAST(UpdatedDate AS DATE) 
    FROM [tblStudentCourses] 
) AS T 
ORDER BY ActualDate; 

注意:如果日期時間類似於您的示例數據,則將日期列轉換爲日期。

+0

@Alex,你做,如果你只想在選擇一列(例如顯示日期而不是實際日期)。顯示日期是varchar,因此按字母順序排序,而不是日期... – ZLK

+0

我的不好,你是對的 – Alex

-1
SELECT DISTINCT convert(VARCHAR,updatedDate,103) 
FROM [tblStudentCourses] 
ORDER BY updatedDate DESC 

您應該使用轉換爲varchar用於格式化各種日期格式

+0

謝謝,這是建議,但不起作用 - 見上面 – kneidels