首页 新闻 会员 周边

SQLServer拼接语句使用between and 出错,求助

0
[已解决问题] 解决于 2014-12-19 15:38
 1 alter procedure GetBy_ItemName_BetweenTime
 2 @itemName nvarchar(50),
 3 @beginTime datetime,
 4 @endTime datetime
 5 as
 6 
 7 declare @tableName nvarchar(50)
 8 set @tableName = (select TableName from TQueryItem where ItemName=@itemName)
 9 
10 exec ('select * from '+@tableName+' where YYMMDD between '+@beginTime+' and '+@endTime)

上面的SQL执行不了,应该是between那里的时间参数拼接有问题吧?可是改了很多次还是不行,求助啊!该怎样修改?

问题补充:

最后答案:

 

ALTER procedure [dbo].[GetBy_ItemName_BetweenTime]
@itemName nvarchar(50),
@beginTime datetime,
@endTime datetime
as

declare @tableName nvarchar(50)
set @tableName = (select TableName from TQueryItem where ItemName=@itemName)

exec ('select * from '+@tableName+' where YYMMDD between '''+@beginTime+''' and '''+@endTime+'''')

 

 

时间上的单引号问题。。。我蠢了

AaronLi的主页 AaronLi | 初学一级 | 园豆:41
提问于:2014-11-21 23:21
< >
分享
最佳答案
0

问题解决了。。。是引号问题,我太蠢了。。

AaronLi | 初学一级 |园豆:41 | 2014-12-19 15:35
其他回答(3)
0

1、@TableName先确定一下,结果是什么,不要用动态的。

2、同理, BeginTime 和 EndTime。

3、直接执行一下拼出来的语句,看看显示什么错误。

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-11-22 08:18

@TableName这个没问题,因为去掉后面的时间参数可以查询得出数据,加上between后就查询出错了,出错的是时间。

支持(0) 反对(0) AaronLi | 园豆:41 (初学一级) | 2014-11-22 09:24

@xiao黎: 对啊,时间。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2014-11-22 09:32
0

传入的参数beginTime,endTime非合法日期格式值,把sql报错也发上来

Sunnier | 园豆:215 (菜鸟二级) | 2014-11-22 11:53
0

建议:

1、检查下语法是否能通过。

2、在1的前提下,检查传入字符的类型和格式是否符合要求。

HolaZheng | 园豆:61 (初学一级) | 2014-12-03 12:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册