[英]How to pass date value in sql stored procedure from c#
我需要在表中插入購買日期。
我的桌子
purchaseDate date (data type)
C#代碼
string purchaseDate = "";
public string _PurchaseDate
{
get { return purchaseDate; }
set
{
DateTime purchaseDateF = DateTime.Parse(value.Trim());
purchaseDate = purchaseDateF.ToString("dd-MM-yy");
}
}
我存儲的Proc
@purchasedate,
insert into tbl_name (purchaseDate) values (@purchasedate)
如果我通過PurchaseDate =“ 29-may-14”,則將nvarchar轉換為日期時顯示錯誤。
我在哪里出錯?
謝謝...
不要將其作為字符串傳遞。 將其作為日期/時間傳遞。 實際上,我不清楚_PurchaseDate
為什么是string
而不是DateTime
。 但是,不管它是存儲在您的應用程序:當您添加它作為一個參數,轉換(解析)到一個DateTime
第一 ,並添加鍵入日期。 不是string
。
在理想的世界中:
public DateTime PurchaseDate {get;set;}
//...
cmd.Parameters.AddWithValue("purchasedate", obj.PurchaseDate);
然后,僅此而已。
而不是以某種格式插入它,而是以正常的DateTime值插入,然后在檢索時將其轉換為格式化的字符串...
將C#數據類型從字符串更改為日期:
public DateTime _PurchaseDate{get;set;}
用“ _PurchaseDate”進行插入,我猜您想以某種格式在客戶端應用程序上顯示它,因此添加如下屬性:
public string _StrPurchaseDate
{
get
{
return ((DateTime)_PurchaseDate).ToString("dd-MM-yyyy");
}
set
{
}
}
現在只需將日期作為字符串檢索,除非您真的需要將其存儲為sql中的某種格式
注意:如果數據庫的Date列包含NULLS,則從數據庫中檢索值時它將中斷,因此請更改為可為null的DateTime數據類型,然后在轉換時檢查是否為null:
public DateTime? _PurchaseDate{get;set;}
public string _StrPurchaseDate
{
get
{
if (_PurchaseDate != null)
{
return ((DateTime)_PurchaseDate).ToString("dd-MM-yyyy");
}
else
{
return "";
}
}
set
{
}
}
在存儲過程中使用CAST或CONVERT可以將string
值轉換為適當的數據庫類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.