[英]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.