sql按时间查询的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/26 12:48:20
CREATE PROCEDURE P_GetDataWithDateTime
@table nvarchar(20),
@time nvarchar(20),
@ismini int,
@isbefore int
AS

declare @sqlstr nvarchar(200)
set @sqlstr = N'select top 30 thedatetime,[open],high,[low],[close] from ' + @table
set @sqlstr = @sqlstr + N' where thedatetime '

if(@isbefore > 0)
begin
set @sqlstr = @sqlstr + N'> '
end
else
begin
set @sqlstr = @sqlstr + N'< '
end
set @sqlstr = @sqlstr + @time
set @sqlstr = @sqlstr + N' order by thedatetime desc'

exec sp_executesql @sqlstr
GO

我调用这个存储过程出错
execute P_GetDataWithDateTime @table='minitable',@time='2009-03-30 18:19:00.000',@ismini=1,@isbefore=1

服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '18' 附近有语法错误。

动态语句中时间没有加单引号,另外@time长度得是23位呀,否则毫秒就丢了。

CREATE PROCEDURE P_GetDataWithDateTime
@table nvarchar(20),
@time nvarchar(23),
@ismini int,
@isbefore int
AS

declare @sqlstr nvarchar(200)
set @sqlstr = N'select top 30 thedatetime,[open],high,[low],[close] from ' + @table
set @sqlstr = @sqlstr + N' where thedatetime '

if(@isbefore > 0)
begin
set @sqlstr = @sqlstr + N'> '
end
else
begin
set @sqlstr = @sqlstr + N'< '
end
set @sqlstr = @sqlstr +''''+ @time+''''--这里已经改好了
set @sqlstr = @sqlstr + N' order by thedatetime desc'

exec sp_executesql @sqlstr
GO