2011-09-19 74 views
0

我在DateTime會話中遇到問題。 我的輸入是2011年9月22日,我需要轉換爲20110922.在Sql Server 2005中需要DateTime轉換幫助

我試過下面的一個,但失敗了。 選擇Convert(VARCHAR(8), '2011年9月22日',112)作爲DateConv

+0

你的輸入格式看起來像一個字符串而不是'datetime'? –

+0

不,它只是一個日期時間.. – Naveenkumar

回答

3

在這裏你去:

SET DATEFORMAT mdy 
SELECT CONVERT(VARCHAR(8), CAST('09/22/2011' as DATETIME) , 112) AS DateConv 

如果輸入實際上是一個DateTime變量像你說的(但沒在你的代碼示例「T顯示),可以簡化這歸因於:

SELECT CONVERT(VARCHAR(8), @myDate , 112) AS DateConv 
+0

在SET DATEFORMAT dmy'下失敗,就像我的! – Wil

+0

那(編輯)呢?作弊?我的原始版本假設日期字符串將採用本地格式。 – JohnFx

+0

OP已經澄清說它是'datetime',所以你的答案都不需要格式不清的字符串,應該可以工作。 –

1

這將這樣的伎倆:

select year('09/22/2011') * 10000 + month('09/22/2011') * 100 + day('09/22/2011')

+0

這將返回一個int ... –

+0

亞倫這是因爲20110922是INT:D – Wil

+0

是的,理解。只是想澄清,因爲通常當格式化發生的時候,預期的結果是一個字符串。 –

0

沒有任何其他信息,SQL已經將'09/22/2011'解釋爲varchar,只是將數據傳遞過去(忽略CONVERT的樣式參數)。如果您使用以下行:

SELECT CONVERT (VARCHAR (8), CAST ('09/22/2011' as DATETIME), 112) as DateConv 

它應該按預期工作,因爲它會查看'09/22/2011'作爲日期值。如果您從表格中的列中獲取日期,它將已知該類型,並且您不需要擔心表達式的部分,只需使用列名即可。