2011-07-13 56 views
0

我有一個選擇語句,其中包含一個數字,說明,日期。當我嘗試將我的日期添加到語句並運行它時,我得到了字符串錯誤的日期轉換,並且我不太確定如何去處理它。從字符串錯誤的日期轉換

DECLARE @parties AS TABLE (
    PartyId UNIQUEIDENTIFIER 
, Cases NVARCHAR(MAX) 
, CaseTypes VARCHAR(MAX) 
, Assignment DateTime) 

DECLARE @cases NVARCHAR(MAX) 
DECLARE @casetypes VARCHAR(MAX) 
DECLARE @assignment DateTime 
DECLARE @linebreak AS VARCHAR(2) 

SET @cases = NULL 
SET @casetypes = NULL 
SET @assignment = NULL 
SET @linebreak = CHAR(13) + CHAR(10) 
SELECT @cases = COALESCE(@cases+ @linebreak + C.CaseNumber, C.CaseNumber)+"-"+CT.[Description]+"-"+A.DateOn 
FROM [Case] C 
INNER JOIN CaseType CT ON C.CaseTypeId = CT.CaseTypeId 
INNER JOIN @partyCases PC ON C.CaseId = PC.CaseId 
INNER JOIN Appointment A ON C.CaseId = A.CaseId 
WHERE PC.PartyId = @partyId 

將A.DateOn添加到我的select語句並運行後發生錯誤 - 任何建議都會很棒。謝謝!

回答

1

SQL將日期值作爲日期時間返回,並且這些值不能隱式用作字符串(varchars)。你將不得不明確地轉換或施放它們。因此,在任一下列2種方式改變你的SELECT語句:

SELECT @cases = COALESCE(@cases+ @linebreak + C.CaseNumber, C.CaseNumber)+"-"+CT.[Description]+"-"+CONVERT(varchar, A.DateOn) 

OR

SELECT @cases = COALESCE(@cases+ @linebreak + C.CaseNumber, C.CaseNumber)+"-"+CT.[Description]+"-"+CAST(A.DateOn as varchar) 

CONVERT有微弱的優勢 - 你可以應用格式上的日期,如果你想要的。

+0

謝謝!我使用了轉換,所以我可以應用我的格式。感謝您的大力幫助。 – Masriyah

+0

還有一個問題......我想轉換,但是select語句不接受它:SELECT @cases = COALESCE(@ cases + @linebreak + C.CaseNumber,C.CaseNumber)+「 - 」+ CT。[Description] +「 - 」+ CONVERT(VARCHAR,@ assignment,100)AS A.DateOn – Masriyah

+0

嗯......仔細觀察你的原始查詢我認爲你做錯了。所有的變量都設置爲NULL,但是在你選擇的時候,你試圖將它們連接到一個字符串,並且還在執行@cases = COALESCE(@cases ...),我認爲這不會起作用。如果你告訴我更多你的查詢輸出應該是什麼我可能能夠幫助你。 – legendofawesomeness

相關問題