2012-04-05 46 views
0

海蘭轉換時的日期,SQL - 從字符串

我有一個問題,我不出來...

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(),因爲這個存儲過程將每月運行,並在該月

回答

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)' 
+0

感謝男人......它工作 – pufos 2012-04-05 08:27:30