2012-04-05 2 views
0

숨바꼭질에서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 :이 저장 프로 시저가 매월 실행하기 때문에 exec()을 실행해야하고 TSQL이 날짜로 모든 텍스트를 변환하려고

답변

1

는 그 달 동안 매우

감사를 데이터베이스를 만듭니다. 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

관련 문제