2012-04-05 11 views
0

のHyからSQL - ... <p></p>が、私は問題を抱えていると私はそれを把握することはできません、文字列

declare @start_date datetime, @date_1m datetime, @date_1m_end datetime 

    set @start_date = GETDATE() 
    set @date_1m = DATEADD(MONTH,-1,DATEADD(MONTH, DATEDIFF(MONTH, 0, @start_date),0)) 
    set @date_1m_end = DATEADD(SS, -1, DATEADD(MONTH, 1, @date_1m)) 

    set @sql_exec = 'insert into #temp select ... where a.date between ' + @date_1m + ' and ' + @date_1m_end + '' 
exec(@sql_exec) 

を日付を変換する際の変換が失敗し、それは私に次のエラーを与える:

Conversion failed when converting date and/or time from character string.

なぜ、どのようにそれがイライラなってきたので、これを解決するための...

PS:あなたは非常に多くの

おかげ

答えて

1

を私は、このストアドプロシージャが毎月実行されるので、exec()を実行する必要があり、それはその月のデータベースを作成し、TSQLは、日時にすべてのテキストを変換しようとしています。 concationの前に日付を文字列に変換し、それらをクエリの日付に変換する必要があります。

set @sql_exec = 'insert into #temp select ... where a.date between ' 
    + 'convert(datetime, ''' 
    + convert(varchar(10), @date_1m, 104) 
    + ''', 104)' 
    + ' and ' 
    + 'convert(datetime, ''' 
    + convert (varchar(10), @date_1m_end, 104) 
    + ''', 104)' 
+0

ありがとうございました。 – pufos

関連する問題