SqlCommand 时间参数问题

houzy123 2003-09-28 05:11:43
没有错误提示,从数据库提不出应该有的数据,即应该DataView.Count>0,但是DataView.Count=0,why?
String c_sql1="SELECT * FROM packing_mx_total_zcd_color where zcd='"+c_zcd+"' and out_date<=@date";

String c_connect=Session["s_connect"].ToString();
SqlConnection mySQLConnection = new SqlConnection(c_connect);

SqlDataAdapter myCommandassorted = new SqlDataAdapter();
SqlCommand selectCMD = new SqlCommand(c_sql1, mySQLConnection);
myCommandassorted.SelectCommand = selectCMD;
selectCMD.Parameters.Add("@date", SqlDbType.DateTime).Value = Convert.ToDateTime(c_date);

DataSet dsassorted = new DataSet();
myCommandassorted.Fill(dsassorted, "assorted");
DataView assortedView=new DataView(dsassorted.Tables["assorted"]);
...全文
38 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
houzy123 2003-10-03
  • 打赏
  • 举报
回复
to:qimini(循序渐进)
如果只是date你的方法是可以的,因为我也是这样用,但如果是datetime时(注意time),这种方法就实现不了.
Stevetan81 2003-10-03
  • 打赏
  • 举报
回复
你是想在数据库中 导航 吗?
那就可以用 CurrencyManager
用cm来做,他可以实现跟导航相关的功能。
qimini 2003-10-03
  • 打赏
  • 举报
回复
昏~~~~
涉及到时间ToString("yyyy-MM-dd HH:mm:ss");

标准的做法是用CultureInfo格式化啊,前面已经说了(也有范例了啊)?

没有解决你的问题?

那可是MS标准用法 : )
qimini 2003-09-29
  • 打赏
  • 举报
回复
昏~~~都说了要格式化了,绝对没有问题.我以前开发就遇到的,DateTime默认取的是当前机器的日期格式的日期.要和服务器上取的数据做比对,自己先做个格式化就可以了(抓数据时和从本地取时间时都要做).

肯定可以解决的---我们用的to_char(Oracle英文版服务器)和*.ToString("yyyy-MM-dd")(繁体客户端),也就解决了问题 : )
cxfidc 2003-09-29
  • 打赏
  • 举报
回复
最好是使用日期函数...

SQLSERVER 使用 DATEDIFF
houzy123 2003-09-29
  • 打赏
  • 举报
回复
各位,我在没办法的情况下改变sql 2k算法,避开datetime,在view中用内部比较处理
但是datetime在c#的处理仍然是一个问题
qimini 2003-09-28
  • 打赏
  • 举报
回复
改成和你服务器一致的区域设置就可以了
qimini 2003-09-28
  • 打赏
  • 举报
回复
To houzy123(houzy123) :

不是有答案了吗?把CultrueInfor改成中国就可以了,'zh-cn'---记不清了.自己查查MSDN
zhou80bin 2003-09-28
  • 打赏
  • 举报
回复
up
houzy123 2003-09-28
  • 打赏
  • 举报
回复
TO:qimini(循序渐进)
我是在繁体开发环境下做的
houzy123 2003-09-28
  • 打赏
  • 举报
回复
回: saucer(思归)
可以取得记录的
qimini 2003-09-28
  • 打赏
  • 举报
回复
出现这种情况一般是客户端和服务器段的区域设置有所不同所导致,
根本的解决方法是在取得日期时尽量不要直接Convert.ToDateTime就了事,最好是自己来手动或者调用DateTime.Parse的重载方法去做个格式化。

通常在Oracle服务器段和客户端版本不一致、繁体开发环境+中文操作系统的情况中比较容易出现此问题

=====================From MSDN 2003

System.IFormatProvider format =
new System.Globalization.CultureInfo("fr-FR", true);

// Reverse month and day to conform to a different format.
string strMyDateTimeFrench = " 16/02/1992 12:15:12";

// myDateTimeFrench gets Feburary 16, 1992, 12 hours,
// 15 min and 12 sec.
System.DateTime myDateTimeFrench =
System.DateTime.Parse(strMyDateTimeFrench,
format,
System.Globalization.
DateTimeStyles.NoCurrentDateDefault);
houzy123 2003-09-28
  • 打赏
  • 举报
回复
yes
二楼就是检查c_date的时间值与跟踪结果
saucer 2003-09-28
  • 打赏
  • 举报
回复
这不是错,因为xxdate.Date只算日期,它的时间部分是临晨


如果你在SQL 分析器里运行下一句,能取得记录么?

String c_sql1="SELECT * FROM packing_mx_total_zcd_color where zcd='"+c_zcd+"' and out_date<='2003/9/13 下午 02:42:23'";

herofyf 2003-09-28
  • 打赏
  • 举报
回复
Whether do you have made corresponding value inside out !
houzy123 2003-09-28
  • 打赏
  • 举报
回复
跟踪c_date='2003/9/13 下午 02:42:23'
然后处理,跟踪结果如下
DateTime xxdate=Convert.ToDateTime(c_date);
String ddss=xxdate.Date.ToString();//ddss='2003/9/13 上午 12:00:00'
String dss=xxdate.ToString(); //dss='2003/9/13 下午 02:42:23'

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧