数据库查询关于日期的格式问题
在本地测试每行计算都没有问题,但是放到服务器的时候,合计出现问题了。纠结了二十分钟知道错误了,原来是日期格式有问题
本地测试结果:
服务器测试结果:
很纠结的,怎么合计没有出来,因为这个统计报表不是我做的,甚至我都不清楚涉及到的表结构。只是把同事之前做的拿过来进行修改。
所有方法都是调用同事写好的。在统计的时候我去用了一个循环调用(性能肯定不好,但是我不清楚表结构,所以不去自己写sql查询了)。但是结果在本地一直没有问题。扔到服务器就出问题了,所有合计都是0.排查了半个小时,找到原因。原来是时间格式的问题。同事这边时间格式直接是一个string类型。我就直接把时间ToShortDateString()。然后本地没有出现任何问题。
可能原因就是本地在vs中进行调试。vs会自动转换时间格式的,至于服务器格式是固定的,所以导致传入到数据库中查询的sql语句日期格式出现问题,然后没有出现正确结果。
解决办法,把同事写的查询方法的时间参数由string类型修改为datetime类型。然后自己在该方法内对时间合适进行转换,这样不必每次调用该方法都必须对时间格式进行转换。并且还可能出现时间格式“yyyy-MM-dd” "yyyy/MM/dd" 等string类型问题统一为datetime格式。
结论,以后写方法的时候能够使用最原始的数据格式就用最原始的格式,不要让调用该方法的人来转换数据格式。如果必须由调用者来转换参数格式,请提前说明参数格式问题