2016-09-29 78 views
-1

我能夠將字符串'1989-06-18'插入到數據類型date的SQL Server列中,但是當我嘗試使用'2000-01-01'更新同一列時,它拋出錯誤SQL Server中的更新引發錯誤

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 
+0

使用強制關鍵字來更新日期。 –

+0

DateOfBirth是Date類型的,參數是varchar,因爲我將三個下拉列表中的值連接起來。 –

+0

嘗試轉換(日期,@ dob,126) –

回答

0

試試這個。

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 [email protected]; 
END 
+0

仍然有相同的錯誤... –

0

忽略解答關於您鑄造Varchar(50)DateDateTime - 他們不會解決這個問題。唯一的解釋是您的字符串@dob不是有效的日期。

這就是爲什麼您要確保存儲過程的參數與要插入的字段匹配。請更改您的@dob參數以匹配字段的數據類型。

0

使用CAST您將字符串指定爲日期。

SELECT CAST('2000-01-01' AS Date) AS MyDate