为什么在SQL存储过程中调用日期查询提示“从字符串转换为 datetime 时发生语法错误”
CREATE procedure up_item_lrhz
(
@BeginDate datetime,
@EndDate datetime,
@namemc VARCHAR(30),
@qxkf VARCHAR(30),
@qxck VARCHAR(30),
@r1 VARCHAR(30),
@lrfs VARCHAR(30),
@lxs VARCHAR(30),
@pps VARCHAR(30),
@mc VARCHAR(100),
@ys VARCHAR(30),
@fcgs VARCHAR(100),
@ckmc VARCHAR(100),
@ywy VARCHAR(30),
@ywz VARCHAR(30),
@gysmc VARCHAR(100),
@gysmct VARCHAR(100),
@lrdb VARCHAR(30),
@fs VARCHAR(30),
@cklx VARCHAR(30),
@ckfs VARCHAR(30)
---@return int output
)
as
DECLARE @mode VARCHAR(50)
DECLARE @SQL VARCHAR(1000)
DECLARE @SQL_Where VARCHAR(3000)
set @SQL_Where='select * from tt'
Set @SQL_Where = @SQL_Where +' where a.out_date between ''' + @BeginDate + ''' And ''' +@EndDate+ ''''
exec (@SQL_Where)
GO
CREATE procedure up_item_lrhz
(
@BeginDate datetime,
@EndDate datetime,
@namemc VARCHAR(30),
@qxkf VARCHAR(30),
@qxck VARCHAR(30),
@r1 VARCHAR(30),
@lrfs VARCHAR(30),
@lxs VARCHAR(30),
@pps VARCHAR(30),
@mc VARCHAR(100),
@ys VARCHAR(30),
@fcgs VARCHAR(100),
@ckmc VARCHAR(100),
@ywy VARCHAR(30),
@ywz VARCHAR(30),
@gysmc VARCHAR(100),
@gysmct VARCHAR(100),
@lrdb VARCHAR(30),
@fs VARCHAR(30),
@cklx VARCHAR(30),
@ckfs VARCHAR(30)
---@return int output
)
as
DECLARE @mode VARCHAR(50)
DECLARE @SQL VARCHAR(1000)
DECLARE @SQL_Where VARCHAR(3000)
set @SQL_Where='select * from tt'
Set @SQL_Where = @SQL_Where +' where a.out_date between ''' + @BeginDate + ''' And ''' +@EndDate+ ''''
exec (@SQL_Where)
GO
set @SQL_Where='select * from tt a' 如果一定是日期错误,那不是由此处少个 a 而引起的,可能是传入的日期本来就不对.