0

我有一个项目要求用户输入(@startdate 和@enddate)

一旦他们选择了日期,他们就必须按下一个按钮。
按下按钮后,它将运行存储过程并在报表查看器中返回结果。

问题是如果我选择同一天(例如 5/14/2012)。

(@startdate 和 @enddate 都是 5/14/12)它不会显示任何信息,因为它设置为 00:00:00。

我希望 datetimepicker2 (@enddate) 的时间戳为 23:59:59。

如何添加 23:59:59 作为 datetimepicker2.value 的时间?

4

3 回答 3

1

最简单的方法是将时间添加到 datetimepicker2 值:

DateTime value = datetimepicker2.Value.AddSeconds(86399); //86400 is 24 hours
于 2012-05-16T15:50:42.347 回答
1

你可以在 c# 中使用 DateTime.AddDays(1).AddSeconds(-1) - 但我不建议这样做 - 看起来你应该修改你的 sproc

我假设您在 SQL 过程中执行 BETWEEN ?

我通常使用

YourDate >= @StartDate AND YourDate < DATEADD(d, 1, @EndDate)

这是因为在使用时间戳时,您需要选择一整天(例如 5/14/2012 00:00:00 到 5/14/2012 23:59:59,因此使用此语法是有效的,因为它包含所有开始日期的开始和结束日期的结束之间的时间

选择与开始日期不同的结束日期时,您的 sproc 是否有效,即如果您选择 5/14/2012 -> 5/15/2012,它是否返回 2012 年 5 月 15 日的数据?

如果没有,那么您可能会看到这个问题

于 2012-05-16T15:53:08.760 回答
1

最小值_ _

'08/21/2011 00:00:00'

最大值_ _

'2011 年 8 月 21 日 23:59:59'

用法:

   var firstDate = dtpFrom.Value.Date; //  0:00:00
   var secondDate =  dtpTo.Value.Date.AddSeconds(86400 - 1); //23:59:59 - 86400 is 24 hours
   var list = Services.GetListForFilter(firstDate, secondDate);
于 2014-11-25T13:39:34.250 回答