1

我正在使用 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;

我的问题是我这样做是否正确以避免我的客户端应用程序机器的区域设置问题。我能做些什么来完全避免区域设置问题?

谢谢

4

2 回答 2

5

deliverydate一个varchar?我不这么认为。
您可以将参数添加为DateTime

cmd.Parameters.Add("@scantime", SqlDbType.DateTime).Value = Calendar1.SelectedDate;

然后所有的区域设置问题都没有了,因为没有字符串->日期->字符串转换,并且比较是基于真实的日期值,而不仅仅是字符串表示。

于 2013-04-12T10:21:09.450 回答
0

如果 deliverydate 是 varchar 类型,那么我在您的代码中没有发现任何问题,

但是如果deliverydate是日期时间然后改变代码如下 -

你的

cmd.Parameters.Add("@scantime", SqlDbType.VarChar, 10).Value = Calendar1.SelectedDate.ToString("yyyy-MM-dd");

新代码:

cmd.Parameters.Add("@scantime", SqlDbType.DateTime).Value = Calendar1.SelectedDate;

于 2013-04-12T12:59:42.153 回答