我使用SQL在C#中从SQL-Server中检索数据,如下所示:
var cmd = new SqlCommand(
"select *, replace(trucknocn, char(10), '') trucknocn1 from deliverylist where deliverydate=@scantime", sqlCon);
cmd.Parameters.Add("@scantime", SqlDbType.VarChar, 10).Value
= Calendar1.SelectedDate.ToString("yyyy-MM-dd");
da.SelectCommand = cmd;
我的问题是我这样做是否正确以避免客户端应用程序机器的区域设置问题。我能做些什么来完全避免区域设置问题?
由于
答案 0 :(得分:5)
deliverydate
是varchar
吗?我不这么认为。
您只需将参数添加为DateTime
:
cmd.Parameters.Add("@scantime", SqlDbType.DateTime).Value = Calendar1.SelectedDate;
然后所有的区域设置问题都消失了,因为没有string-> Date->字符串转换,并且比较是基于实际日期值而不仅仅是字符串表示。
答案 1 :(得分:0)
如果deliverydate是varchar类型,那么我在代码中没有发现任何问题,
但是如果deliverydate是datetime,那么更改代码如下 -
您的
cmd.Parameters.Add(“@ scantime”,SqlDbType.VarChar,10).Value = Calendar1.SelectedDate.ToString(“yyyy-MM-dd”);
新守则:
cmd.Parameters.Add(“@ scantime”,SqlDbType.DateTime).Value = Calendar1.SelectedDate;