0

ハイ、

問題があり、それを理解することはできません...

    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:exec()このストアド プロシージャは毎月実行され、その月のデータベースが作成されるため、実行する必要があります。

どうもありがとうございます

4

1 に答える 1

1

TSql はすべてのテキストを datetime に変換しようとしています。連結する前に日付を文字列に変換し、クエリで日付に戻す必要があります。

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)'
于 2012-04-05T08:01:32.037 に答える