麻烦的存储过程,提示“从字符串转换为 datetime 时发生语法错误”
各位朋友,小弟的存储过程如下,但调用的时候:出现如下的错误提示,请问该怎样解决,请各位朋友赐教,谢谢!!!
exec test @begin_date= '2007-9-1 ', @end_date= '2007-9-3 '
错误提示:
消息 241,级别 16,状态 1,过程 test,第 6 行
从字符串转换为 datetime 时发生语法错误。
ALTER procedure [dbo].[test]
@begin_date datetime,
@end_date datetime
as
declare @str varchar(2000)
set @str= 'select isnull(employee.emp_id,sign_time.emp_id) emp_id,
emp_name, isnull(employee.card_id,sign_time.card_id) card_id,
hire_date, no_sign,sex, principal, depart_name, clock_id,
convert(varchar(16),sign_time,120) sign_time,
from
(select e.emp_id,e.emp_name,e.card_id,
hire_date,
Case no_sign WHEN 0 THEN ' '要打卡 ' ' ELSE ' '免卡 ' ' END no_sign,
Case sex WHEN 0 THEN ' '男 ' ' ELSE ' '女 ' ' END sex,
d.principal,
d.depart_name from employee e
left outer join
depart d
on
e.depart_id=d.depart_id) employee,
(select clock_id, card_id, emp_id, sign_time from tmpTRecords where sign_time> = '+@begin_date+ ' and sign_time <= '+@end_date+ ')sign_time
where
employee.emp_id=sign_time.emp_id '
exec (@str)
------解决方案--------------------ALTER procedure [dbo].[test]
@begin_date datetime,
@end_date datetime
as
declare @str varchar(2