Sql server 设置变量时显示存储过程中的错误
我有这样的存储过程:Sql server 设置变量时显示存储过程中的错误,sql-server,Sql Server,我有这样的存储过程: create PROCEDURE [dbo].[Test1] @startdate datetime(100), @enddate datetime(100) set date1 = CONVERT(datetime, @startdate + ' 00:01:00', 120) set date2 = CONVERT(datetime, @enddate + ' 00:23:59', 120) as begin sel
create PROCEDURE [dbo].[Test1]
@startdate datetime(100),
@enddate datetime(100)
set date1 = CONVERT(datetime, @startdate + ' 00:01:00', 120)
set date2 = CONVERT(datetime, @enddate + ' 00:23:59', 120)
as
begin
select t.PlateNo
from Transaction_tbl t
WHERE dtime between @date1 + ' 00.01.00.00'
AND @date2 + ' 23:59.59.00'
end
执行此命令时,将收到两条错误消息
关键字“set”附近的语法不正确
必须声明标量变量@date1
试试这个:-
create PROCEDURE [dbo].[Test1]
@startdate varchar(100),
@enddate varchar(100)
as
declare @date1 datetime
declare @date2 datetime
set @date1 = CONVERT(datetime, @startdate + ' 00:01:00', 120)
set @date2 = CONVERT(datetime, @enddate + ' 00:23:59', 120)
begin
select t.PlateNo
from Transaction_tbl t
WHERE dtime between @date1 + ' 00.01.00.00'
AND @date2 + ' 23:59.59.00'
end
我想你的意思是:
create PROCEDURE [dbo].[Test1]
@startdate varchar(100),
@enddate varchar(100)
as
begin
declare @date1 datetime = CONVERT(datetime, @startdate + ' 00:01:00', 120);
declare @date2 datetime = CONVERT(datetime, @enddate + ' 00:23:59', 120);
select t.PlateNo
from Transaction_tbl t
WHERE dtime between @date1 AND @date2;
end;
但是,我认为您最好按照我在上一个问题的回答中的建议进行操作,并将参数传递为date。您已经设置了date1,并且在查询中使用了@date1 vs date1-不是同一个变量。希望这有助于设置@date1,,然后也得到错误