我想在sql表(數據類型是日期)中插入日期(僅限日期,而不是日期時間)。在使用c的sql服務器中更新日期字段時出錯#
我使用的是我從jquery datepicker獲得的'23/07/2013'
格式。
當我執行下面的SQL,我得到以下錯誤。
SQL:UPDATE qmsAuditFindings SET FindDate='23/07/2013' WHERE AuditID=37
請指教。
另外值得一提的是,具有精確格式的插入語句工作得很好。只是沒有的更新。
我想在sql表(數據類型是日期)中插入日期(僅限日期,而不是日期時間)。在使用c的sql服務器中更新日期字段時出錯#
我使用的是我從jquery datepicker獲得的'23/07/2013'
格式。
當我執行下面的SQL,我得到以下錯誤。
SQL:UPDATE qmsAuditFindings SET FindDate='23/07/2013' WHERE AuditID=37
請指教。
另外值得一提的是,具有精確格式的插入語句工作得很好。只是沒有的更新。
在表面上看,這是一個簡單的格式問題 - 但「固定格式」是解決這個錯誤的方式;你應該參數化,使格式根本不適用。日期不是有「格式」,因此 - 他們只是數字。例如,我們應該大概執行是:
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 });
您的方式非常感謝。爲了節省時間,我做了不安全的方式。 –
@ReidGarwin我讀到「爲了節省時間,我故意做了可能導致數據丟失的事情」 - 但很好:您的系統,您的電話 –
您的日期不是 –
,你需要從varchar t時的日期轉換格式正確的SQL被插入O日期使用SQL服務器的轉換功能 –