2012-10-04 41 views
0

我試圖將存儲在yyyy-mm-dd格式中的表中的現有sql日期轉換爲使用以下命令dd-mm-yyyy。雖然這樣做,我可以成功地將其轉換爲nvarchar數據類型,但將其轉換爲日期時,我仍然收到舊格式yyyy-mm-ddSQL Server日期鑄造和格式問題

這裏查詢

Select 
    Convert(date, CONVERT(VARCHAR(10), a.LogDateTime, 103), 103) AS LDate 
from sec.[Log] AS a 

我也嘗試從nvarchar轉換爲使用下面的腳本日期,但結果仍然相同。

SELECT convert(date, '23/10/2016', 103) 

任何人都可以說出究竟是什麼問題嗎?因爲我希望我的日期能夠在不改變數據類型的情況下從我們的格式轉換爲英國格式。

回答

2

日期不以任何文本格式存儲。 DATETIME值以內部格式存儲,佔用8個字節的磁盤存儲空間。它是以文本形式存儲的不是

僅供參考,yyyy-mm-dd不是美國格式。這只是SQL Server團隊決定用來在SQL Server Management Studio中顯示日期值的普遍接受的,明確的顯示格式。

如果您必須以特定形式顯示它,則必須在顯示圖層中執行此操作,例如您的Visual Studio創建的桌面應用程序。不幸的是,沒有設置來控制SSMS中的默認格式,所以如果你打算在SSMS中查看它,你只需要用正確的格式進行轉換(103)。

declare @d datetime 
set @d = '20120506' 
select CONVERT(char(10), @d, 103) -- or column instead of variable 
+0

+1非常完整的答案。 – Kermit

1
SELECT CONVERT (VARCHAR(15), logdatetime, 105) 
FROM sec.[log]