2012-04-05 17 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