2011-08-02 14 views
1

UPDATEコマンドでエラーをスローしているストアドプロシージャは、関連するコード行があります。文字列から日付/時刻を変換する際にここでUPDATEコマンドの日付変換エラー

DECLARE @submitDate1 DATETIME; 
SET @submitDate1 = GETDATE() 

    SET @sql = 'UPDATE ' + @currTable + ' SET [lang_String] = ''' + @lang_String + ''', [date_Changed] = ''' + @submitDate1 + ''', [prev_LangString] = ''' + @prev_LangString + ''', [needsTranslation] = ''' + @needsTranslation + ''' WHERE [ID] = ' + CAST(@ID as nvarchar(10)) + '; ' 
    EXEC(@sql) 

は誤りである... 変換に失敗しました。

+0

誰も@lang_Stringを ''WHERE 1 = 0;で埋めることを望みません。 DROP TABLE Users; ' –

答えて

4

あなたが他の文字列にそれを連結する前に、文字列に日付を変換する必要があります:あなたは@submitDate1変数を使用していた場所で

... = ''' + convert(varchar(20), @submitDate1) + ''', [... 
+0

なぜ、私は興味があります、フィールドはDATETIMEとして宛先テーブルで定義されています。 – htm11h

+0

@ marc11h:文字列を作成するためです。文字列をクエリとして使用するまでは、テーブルにはまったく関係ありません。 – Guffa

+0

@ Marc11h動的なvarcharを構築しています。 datetimeを変換またはキャストせずにvarcharをdatetimeと連結することはできません –

1

使用

convert(varchar,@submitDate1) 

SQLは、日付から文字列への暗黙的な変換を行いません!