使用datetime作为存储过程中的参数更新表时出错

时间:2011-02-21 06:01:32

标签: sql datetime

这是我的问题:

UPDATE Mst_Attendance 
  SET FNLogged=@FNLogged,
   ANLogged=@ANLogged,LogTime=@LogTime,LogOuttime=@LogOuttime 
WHERE EmployeeId=@Employee_id AND Atdate = CONVERT(VARCHAR(10), @AtDate, 101) AS [MM/DD/YYYY]
-- Convert(Datetime,@AtDate) 


SELECT * FROM Mst_Attendance where Atdate=@AtDate and EmployeeId=@Employee_id

AS附近发生错误

2 个答案:

答案 0 :(得分:2)

只需删除AS [MM/DD/YY]代码段即可。您不需要它,并且它在WHERE子句中无效。

世界上你在数据库中将日期存储为字符串是什么?这只是个坏主意。你想截断时间部分吗?

答案 1 :(得分:1)

该上下文中的

AS用于为列或表提供别名;这里的AS没有任何意义,因为那不是选择。

您已经通过CONVERT(VARCHAR(10), @AtDate, 101)指定了格式,但这似乎也很奇怪;日期不是字符串。如果您在datetime上进行匹配,请将所有内容保留为datetime

如果您实际上是在尝试删除时间部分(仅留下日期),请执行以下操作:a:不发送时间(在呼叫者处剪切),或b:执行以下操作:

set @date = cast(floor(cast(@date as float)) as datetime)