2011-11-01 16 views
1

可以說我有我的數據庫的日期時間,如:2011-10-24 00:00:00.000。我想將其轉換爲24/10/2011,但我無法找到原生SQL Server的方式來完成此操作,並且在運行查詢後,我寧願不在代碼中執行此操作。SQL Server ODBC規範日期格式爲DD/MM/YYYY?

我試着做一些事情如下(as per the manual

select CONVERT(datetime, '2011-10-24 00:00:00.000', 103); 

但是,這並不奏效,我的結果是:

消息242,級別16,狀態3,行1
將char數據類型轉換爲日期時間數據類型導致超出範圍的日期時間值。

我懷疑這可能是由於小數精度或時間的一部分,但我不知道如何去做這個沒有導致一些字符串黑客正則表達式替換廢話(和我'寧可不這樣做,如果我這樣做,我最終可能會在查詢後執行轉換。

+0

什麼版本的SQL Server? –

+0

@MartinSmith 2000 – Incognito

回答

3

如果我正確閱讀手冊,你應該用stlye 120「ODBC規範」 - 沒有?

嘗試:

select CONVERT(datetime, '2011-10-24 00:00:00.000', 120); 

我的機器上工程:-)這給你一個SQL Server DATETIME的工作。

如果您想進一步轉換到這24/10/2011,使用第二個CONVERT轉換成一個VARCHAR字符串:

select CONVERT(VARCHAR(50), CONVERT(datetime, '2011-10-24 00:00:00.000', 120), 103) 

這給了我:

24/10/2011 
+0

真棒答案,如果我改變VARCHAR到10,而不是50,這不會造成問題? – Incognito

+0

@Incognito:不,這應該是也沒關係 - 我只是「默認」爲'VARCHAR(50)'(所以它可以容納一個GUID,也爲實例),但是這只是我的(?壞)習慣... 。 –

+0

對我來說看起來不錯,我只是希望有一個更簡單的方法來獲得這也是原生的轉換功能。 – Incognito