2012-04-05 6 views
0

Hy,SQL - Konvertierung fehlgeschlagen, wenn sie von Zeichenfolge

Ich habe ein Problem und ich kann nicht es herausfinden ...

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) 

und es gibt mir die folgenden Fehler Umwandlung Datum:

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

Warum und wie diese zu lösen, weil es frustrierend bekommen ..

PS: Ich brauche exec() laufen, weil diese gespeicherte Prozedur jeden Monat ausgeführt wird und es schafft Datenbank für diesen Monat

Danke Ihnen sehr

Antwort

1

Tsql versucht, alle Ihren Text in Datetime zu konvertieren. Sie müssen Daten vor der Konkationierung in Zeichenfolgen konvertieren und sie in Daten in der Abfrage zurück konvertieren.

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

danke mann ... es hat funktioniert – pufos

Verwandte Themen