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,,然后也得到错误