Sql server SQL Server中的更新引发错误
我能够将字符串“1989-06-18”插入到数据类型为Sql server SQL Server中的更新引发错误,sql-server,Sql Server,我能够将字符串“1989-06-18”插入到数据类型为date的SQL Server列中,但当我尝试使用“2000-01-01”更新同一列时,它会抛出错误 System.Data.SqlClient.SqlException:从字符串转换日期和/或时间时,转换失败 这是我的更新查询 CREATE PROCEDURE sp_update @id int, @title varchar(4), @fname varchar(50), @lname varchar(50
date
的SQL Server列中,但当我尝试使用“2000-01-01”更新同一列时,它会抛出错误
System.Data.SqlClient.SqlException:从字符串转换日期和/或时间时,转换失败
这是我的更新查询
CREATE PROCEDURE sp_update
@id int,
@title varchar(4),
@fname varchar(50),
@lname varchar(50),
@dob varchar(50),
@location int,
@address varchar(255),
@mobile varchar(10),
@email varchar(50),
@experience int
AS
BEGIN
SET NOCOUNT ON;
UPDATE ResumeMaster
SET Title = @title,
FirstName = @fname,
LastName = @lname,
DateOfBirth = @dob,
Location = @location,
Address = @address,
mobileNo = @mobile,
EmailAddress = @email,
Experience = @experience,
ModifiedDateTime = CURRENT_TIMESTAMP
WHERE
id = @id;
END
试试这个
CREATE PROCEDURE sp_update
@id int,
@title varchar(4),
@fname varchar(50),
@lname varchar(50),
@dob varchar(50),
@location int,
@address varchar(255),
@mobile varchar(10),
@email varchar(50),
@experience int
AS
BEGIN
SET NOCOUNT ON;
update ResumeMaster
set
Title = @title,
FirstName = @fname,
LastName = @lname,
DateOfBirth = Cast(@dob as Date),
Location = @location,
Address = @address,
mobileNo = @mobile,
EmailAddress = @email,
Experience = @experience,
ModifiedDateTime = CURRENT_TIMESTAMP
where id=@id;
END
忽略有关将
Varchar(50)
强制转换为Date
或DateTime
的答案-它们不会解决此问题。唯一的解释是您的字符串@dob
不是有效日期
这就是为什么要确保存储过程的参数与要插入的字段匹配。更改
@dob
参数以匹配字段的数据类型。使用CAST将字符串指定为日期
SELECT CAST('2000-01-01' AS Date) AS MyDate
使用cast关键字更新日期。DateOfBirth类型为date,参数为varchar,因为我正在连接三个下拉列表中的值。请尝试转换(date,@dob,126)@kirankolge这仍然不是使用varchar的原因。事实上.NET类型
DateTime
有一个需要一年、一个月和一个日期的ctor!我认为Convert(Date,@dob,126)是以一种格式显示日期,并返回一个字符串,因此不能解决这个问题。