2013-07-10 22 views
-3

我想在sql表(數據類型是日期)中插入日期(僅限日期,而不是日期時間)。在使用c的sql服務器中更新日期字段時出錯#

我使用的是我從jquery datepicker獲得的'23/07/2013'格式。

當我執行下面的SQL,我得到以下錯誤。

SQL:UPDATE qmsAuditFindings SET FindDate='23/07/2013' WHERE AuditID=37

請指教。

另外值得一提的是,具有精確格式的插入語句工作得很好。只是沒有的更新。

enter image description here

+0

您的日期不是 –

+0

,你需要從varchar t時的日期轉換格式正確的SQL被插入O日期使用SQL服務器的轉換功能 –

回答

1

在表面上看,這是一個簡單的格式問題 - 但「固定格式」是解決這個錯誤的方式;你應該參數化,使格式根本不適用。日期不是「格式」,因此 - 他們只是數字。例如,我們應該大概執行是:

UPDATE qmsAuditFindings SET [email protected] WHERE [email protected] 

要做到這一點你在你的.NET代碼的DateTime值,這樣做:

DateTime findDate = ... 
int auditId = ... 
using(var cmd = connection.CreateCommand()) { 
    cmd.CommandText = 
     "UPDATE qmsAuditFindings SET [email protected] WHERE [email protected]"; 
    cmd.Parameters.AddWithValue("findDate", findDate); 
    cmd.Parameters.AddWithValue("auditId", auditId); 
    cmd.ExecuteNonQuery(); 
} 

或更簡單工具,如「短小精悍」:

DateTime findDate = ... 
int auditId = ... 
connection.Execute(
    "UPDATE qmsAuditFindings SET [email protected] WHERE [email protected]", 
    new { findDate, auditId }); 
+0

您的方式非常感謝。爲了節省時間,我做了不安全的方式。 –

+0

@ReidGarwin我讀到「爲了節省時間,我故意做了可能導致數據丟失的事情」 - 但很好:您的系統,您的電話 –