2014-01-28 41 views
-2

下面的日期是我的代碼:無法插入,因爲轉換

SqlCommand cmda = new SqlCommand(
         "insert into EnteryItem (ItemName, ImageIndex, DateEntery, Index0, ItemBarcode)" 
         + "Values (@ItemName, GETDATE(), @ImageIndex, @Index0, @ItemBarcode)" 
         , cn); 
cn.Open(); 
cmda.Parameters.AddWithValue("@ItemName", ""); 
// cmda.Parameters.AddWithValue("@DateEntery", now); 
cmda.Parameters.AddWithValue("@ImageIndex", "0"); 
cmda.Parameters.AddWithValue("@Index0", ""); 
cmda.Parameters.AddWithValue("@ItemBarcode", label12.Text); 

cmda.ExecuteNonQuery(); 
cn.Close(); 

enter image description here

我試過幾種方法,但我得到轉換時的相同

轉換失敗nvarchar值'28/01/2014'到數據類型int。

誤差和從數據類型的日期時間爲int有時

隱式轉換是不允許的。使用CONVERT函數來運行此查詢。

我需要插入日期和時間,以特定格式

+4

[壞習慣踢:錯誤處理日期/範圍查詢](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to -kick-mishandling-date-range-queries.aspx) - 你應該**不要**將日期存儲爲字符串 - 你只是以這種方式尋求麻煩。使用'DATE'或'DATETIME'數據類型! –

+0

well'DateTime.Now.ToString(「d/M/yyyy」)'在'DATETIME'上工作嗎? –

+1

當存儲日期時,格式不重要 - 您存儲的值是。您可以確定是否需要日期,時間,日期和時間(以及是否需要處理時間,TZ偏移量是否相關)並將其存儲在數據庫中。您呈現給最終用戶的格式是您表示層的關注點。 – 48klocs

回答

3

比較列名和值

ItemName ImageIndex DateEntery Index0 ItemBarcode 
@ItemName GETDATE() @ImageIndex @Index0 @ItemBarcode 
     ^  ^

你會看到標有兩個朝後。它試圖將日期放入整數列中。正確的,你應該沒事

+0

我做過,但仍然是相同的錯誤 –

+0

哦,我認爲我是因爲沒有看到這個而失明 –

6

看起來衣被合計爲第二和第三列應該被交換。應該是:

insert into EnteryItem (ItemName, ImageIndex, DateEntery, Index0, ItemBarcode) 
Values (@ItemName, @ImageIndex, GETDATE(), @Index0, @ItemBarcode) 

不使用@DateEntery參數還要注意,雖然你將它添加到帕拉姆列表。

+0

我注意到了,但仍然是相同的錯誤 –

+0

@MagedEWilliam,您得到的錯誤已經正確定購了這些值? – Andrei

+0

不允許從數據類型datetime到int的隱式轉換。使用CONVERT函數運行此查詢 –

相關問題