出现了一个比较棘手的难点,1.时间参数应该怎么转换才可以正常查询??2.怎么才能把查询的结果EXEC(@num)再放到变量里,和别的变量计算???? --声明一系列变量,放置创建连接的基本信息。
DECLARE @provider VARCHAR(20)
DECLARE @username VARCHAR(20) --登录名
DECLARE @pwd VARCHAR(20) --密码
DECLARE @database VARCHAR(20)--数据库名
DECLARE @server VARCHAR(20) --ip--通过select查询获得上面的变量
*********--问题出在这
--时间参数
DECLARE @time DATETIME
SET @time = CONVERT(VARCHAR(10),GETDATE()-1)
--获得统计的数量
DECLARE @num VARCHAR(500)
set @num ='SELECT COUNT(*) FROM ' +@snk+ '.' +@database+ '.dbo.' +@table_name+ ' WHERE opcode=''' +@wscode+ '''''and date>'''+@time+'''''AND date<'''+@time+1 ''''
EXEC(@num)
--时间参数提示无法把datetime转换成varchar,>@time,<@time+1获得一天之内的时间范围,请问这里怎么转换才能正常运行?????
--之后想把EXEC(@num)获得的结果再放在一个变量里,转换成能计算的变量然后要能在后面再和其他变量进行运算????
如:SELECT @num*@money
SELECT @num/@int --等等之类的计算,大家帮忙想想由于@num是VARCHAR,而且查询的EXEC(@num)不知道能不能再放进变量,后面的@int,@money是从别的查询语句中查出的变量,同样存在需要转型的问题??
这里是不是要使用临时表把结果写进去再和别的变量计算???
DECLARE @provider VARCHAR(20)
DECLARE @username VARCHAR(20) --登录名
DECLARE @pwd VARCHAR(20) --密码
DECLARE @database VARCHAR(20)--数据库名
DECLARE @server VARCHAR(20) --ip--通过select查询获得上面的变量
*********--问题出在这
--时间参数
DECLARE @time DATETIME
SET @time = CONVERT(VARCHAR(10),GETDATE()-1)
--获得统计的数量
DECLARE @num VARCHAR(500)
set @num ='SELECT COUNT(*) FROM ' +@snk+ '.' +@database+ '.dbo.' +@table_name+ ' WHERE opcode=''' +@wscode+ '''''and date>'''+@time+'''''AND date<'''+@time+1 ''''
EXEC(@num)
--时间参数提示无法把datetime转换成varchar,>@time,<@time+1获得一天之内的时间范围,请问这里怎么转换才能正常运行?????
--之后想把EXEC(@num)获得的结果再放在一个变量里,转换成能计算的变量然后要能在后面再和其他变量进行运算????
如:SELECT @num*@money
SELECT @num/@int --等等之类的计算,大家帮忙想想由于@num是VARCHAR,而且查询的EXEC(@num)不知道能不能再放进变量,后面的@int,@money是从别的查询语句中查出的变量,同样存在需要转型的问题??
这里是不是要使用临时表把结果写进去再和别的变量计算???
SET @time = CONVERT(VARCHAR(10),GETDATE()-1,120)
--获得统计的数量
DECLARE @num nVARCHAR(500),@i int
set @num ='SELECT @i = COUNT(*) FROM ' +@snk+ '.' +@database+ '.dbo.' +@table_name+ ' WHERE opcode=''' +@wscode+ ''' and datediff(d,date,'''+convert(char(10),@time,120)+''' between 0 and 1 "
exec sp_excutesql @num,'@i int output',@i output
select @I--
@i = COUNT(*) @i这里也要加引号和加号分隔开吧????
SET @start_time = CONVERT(NVARCHAR(10),GETDATE()-1,120)
SELECT @start_time--指标
DECLARE @wscode NVARCHAR(50)
SET @wscode='aa123'
--统计用户量
DECLARE @num NVARCHAR(500),@i intset @num = 'SELECT @i = COUNT(*) FROM ' +@snk+ '.' +@database+ '.dbo.' +@table_name+ ' WHERE opcode= ''' +@wscode+ ''' and datediff(d,date,''' +convert(char(10),@start_time,120)+ ''' between 0 and 1'''EXEC sp_executesql @num,'@i int output',@i output
'消息 214,级别 16,状态 3,过程 sp_executesql,第 1 行
过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@parameters'。'
EXEC sp_executesql @num,N'@i int output',@i output
SET @start_time = CONVERT(NVARCHAR(10),GETDATE()-1,120)
SELECT @start_time--指标
DECLARE @wscode NVARCHAR(50)
SET @wscode='aa123'
--统计用户量
DECLARE @num NVARCHAR(500),@i intset @num = 'SELECT @i = COUNT(*) FROM ' +ltrim(@snk)+ '.' +ltrim(@database)+ '.dbo.' +ltrim(@table_name)+ ' WHERE opcode= ''' +ltrim(@wscode)+ ''' and datediff(d,date,''' +convert(char(10),@start_time,120)+ ''' between 0 and 1'''EXEC sp_executesql @num,'@i int output',@i output
'消息 214,级别 16,状态 3,过程 sp_executesql,第 1 行
过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@parameters'。'
[sql]
EXEC sp_executesql @num,'@i int output',@i output
[/sql]