2011-07-13 11 views
0

数字、説明、日付を含むselect文があります。ステートメントに日付を追加して実行しようとすると、文字列エラーから日付変換が発生してしまい、どうすればいいのか分かりません。文字列エラーからの日付の変換

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を追加して実行した後に発生します。どのような提案も優れています。ありがとう!

答えて

1

SQLは日付値をdatetimeとして返します。このような値は暗黙的に文字列(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

もう1つの質問...私は変換しようとしていますが、SELECT文が受け入れられません:SELECT @cases = COALESCE(@ cases + @linebreak + C.CaseNumber、C.CaseNumber)+ " - " + CT [説明] + " - " + CONVERT(VARCHAR、@ assignment、100)AS A.DateOn – Masriyah

+0

うーん...あなたの元のクエリをよく見て、私はあなたが間違っていると思う。すべての変数はNULLに設定されていますが、選択した文字列を連結して@cases = COALESCE(@cases ...)を実行しようとしていますが、これはうまくいきません。あなたの質問出力がどんなものでなければならないかをもっと教えてくれたら、私はあなたを助けることができるかもしれません。 – legendofawesomeness

関連する問題