【发布时间】:2011-06-30 06:26:30
【问题描述】:
将 char 数据类型转换为 DateTime 数据类型导致 DateTime 值超出范围。 声明已终止。
ALTER PROCEDURE [dbo].[attendance_updatebyemployee_id]
@Employee_id int,
@AtDate datetime,
@FNLogged bit,
@ANLogged bit,
@LogTime varchar(10),
@LogOuttime varchar(10)
AS
BEGIN
SET NOCOUNT ON;
update Mst_Attendance set FNLogged=@FNLogged,
ANLogged=@ANLogged,LogTime=@LogTime,LogOuttime=@LogOuttime
where EmployeeId=@Employee_id and Atdate= @AtDate
END
在 C# 代码中,我将其命名为
cmd.Parameters.AddWithValue("@AtDate",Dtime.ToString("dd/MMM/yyyy"));
在使用 SQl profiler 时,传递的数据是
exec [dbo].[attendance_updatebyemployee_id] @Employee_id=2,@AtDate='Feb 19 2011 12:00:00:000AM',@FNLogged=1,@ANLogged=0,@LogTime='11:45 AM',@LogOuttime=' '
在存储过程中,@AtDate 的值为 2011-02-19 00:00:00.000.
它正在破坏更新命令。
在表格内,日期保存为2/19/2011 12:00:00 AM
我该如何解决这个日期问题。
【问题讨论】:
-
能否请您发布代码或错误消息。这样我们就可以避免猜测的解决方案!
-
请贴出相关代码,会有帮助的。
-
至少你可以尝试从顶部将你的 char 转换为一个字符串并以这种方式传递它,或者如果你不想显示你的无论出于何种原因编码。
-
你问这个问题的方式并不聪明。您应该发布您收到的 exact 错误消息,以及您正在使用的确切代码的 sn-p,以便我们自己重现问题。在这一点上,您的问题几乎无法回答。出错的“可能”方式太多了。
-
您的 char 字符串很可能与默认的日期时间格式不匹配。尝试指定日期格式。
标签: c# .net sql-server datetime