今天在美国的服务器上发布了新的版本,使用时竟然发现根据时间条件查询失效。
马上切换到自己的机器上再次测试,发现没问题,将文件Copy到服务器上,使用还是不行。回自己机器上使用VS2008的调试功能调试,没有发现任何问题。跟踪数据库的执行代码,也没发现问题,一切正常。
郁闷了,应用程序和数据库脚本都没问题,那么问题出现在哪里呢?
-------------------------////////////////////////////////////////////////-------------------------------------
在我本地应用程序调试到的时间是 2009-11-6 15:00:05.861,代码为:
DateTime.Now.ToString()+ "." + DateTime.Now.Millisecond.ToString().PadLeft(3, '0');
本地数据库调试到的时间格式也是 2009-11-6 15:00:05.861,脚本为:getdate()
 
继续郁闷ing......
 
vs2008里有个远程调试器,摆弄了好一会儿还是没弄明白那玩意儿是怎么调试的,所以放弃了调试服务器上的应用程序。
运行数据库脚本跟踪工具,打开网页操作一番,终于让我跟踪到了原因所在,原来在服务器上应用程序取得的时间是 11/6/2009 7:07:15 AM.654,终于发现问题所在了。原来sql脚本里执行的条件是这样的
OrderSetCreatedOn between '11/6/2009 7:07:15 AM.654' and '11/13/2009 7:07:15 AM.654',而数据库里的时间格式确是这样的 2009-11-6 15:00:05.861,难怪会出现查询失败(时间格式错误)。
找到问题所在就好办了。
将应用程序里的代码改为DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss.fff"),调试后发现这样写的时间始终是12小时制的,而数据库里的时间确是24小时制的,不明白,网上搜了下,hh小写为12小时制,大写为24小时制,于是,改成DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")。
OK 了,现在根据时间条件来查询就没有任何问题了。
哈哈