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 正在尝试将所有文​​本转换为日期时间。您需要在连接之前将日期转换为字符串,然后将它们转换回查询中的日期。

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 回答