关于数据中时间的坑

   今天遇到一个时间的坑,事情看起来比较简单的,但是处理过程就比较曲折了。

   问题表现在结束时间那天的数据不能包含在抓取的范围之内,这个很容易理解,就是没有传到数据库中的日期最后面没有加上" 23:59:59",看看执行的是存储过程,

不需要动程序了,直接修改存储过程。 

set @ReleaseEndDate=@ReleaseEndDate +' 23:59:59 '

   在SQL中模拟输入条件,完美执行,可是在页面执行的时候问题依旧,让人有些疑惑不解了。

   看了看程式,发现传入的为日期型,

 db.AddInParameter(cmd, "@ReleaseEndDate", DbType.DateTime, eTime);

那么再修改方法吧,在aspx.cs里面修改吧,直接加上 23:59:59。

endTime = DateTime.Parse(this.enddate.Text+" 23:39:39");

发现还是不行,只能重新仔细看代码,结果在DAO层传到存储过程之前发现一段神奇的代码。

eTime = ReleaseEndDate.Value.ToString("yyyy-MM-dd");

于是整个世界总算可以被解释了。

页面修改的时间被上面的代码格式化之后,时间变成了 "00:00:00",之后使用日期型传入到存储过程中,这样长度已经比较长了,再在存储过程中加 时间已经超出了时间字符限制的长度 char(20),后面加上的"23:59:59"等于什么都没有做。

原文地址:https://www.cnblogs.com/wonder223/p/7099535.html