首页 > 解决方案 > 将日期时间变量传递到动态 SQL 查询时出现问题

问题描述

我正在尝试执行动态 SQL 查询,但在字符串 '2020-09-15 18:' 之后出现错误 Msg 105, Level 15, State 1, Line 1 Unclosed 引号。消息 102,级别 15,状态 1,第 1 行“2020-09-15 18:”附近的语法不正确

datetime 变量一定有问题。有人可以建议如何正确完成吗?

declare @paramDailyOutput nvarchar(100), @retrieveDailyVal real
declare @paramDaily float
declare @retrieveDailyID varchar(100) = 'table_53'

declare @startTime datetime, @currTime datetime = GETDATE()
set @startTime = DATEADD(hour, -1, @currTime)

             set @paramDailyOutput = 'SELECT @paramDaily = max(value) - min(value) FROM ' + @retrieveDailyID + ' where read_date between ''' + convert(nvarchar(200), @startTime, 120) + ''' and ''' + convert(nvarchar(200), @currTime, 120) + ''''
             exec sp_executesql @paramDailyOutput, N' @paramDaily float OUTPUT', @paramDaily = @paramDaily output
             select @paramDaily

标签: sql-servertsql

解决方案


你的字符串太短了,你要超过 100 个字符。

尝试将所有内容更改为 250 甚至 300 个字符。或者更好的是,NVARCHAR(1000)。


推荐阅读