从datetimePicker投射日期时间

时间:2014-04-30 14:07:55

标签: c# sql-server datetimepicker

我有一个SQL查询,应该在使用两个日期时间选择器选择的两个日期之间返回一些数据,但是当两个日期相等时,它应该返回该日的数据。我的查询没有返回任何内容,因为我的日期是mm/dd/yyyy hh:mm:ss AM/PM格式。我使用日期时间选择器中的以下日期格式

dtpEndDate.Value.ToShortDateString()

例如,当我的结束日期是2014年4月13日时,它会返回4/13/2014 00:00:00之前的数据,但我希望数据直到4/13/2014 23:59:59

我有以下查询

SELECT   
  sum(isnull(ExpectedAmt, 0)) AS Payment  FROM  Sales                            
  WHERE  (a.SellDate >= @StartDate)  AND (a.SellDate <= @EndDate) 

我尝试投放数据时间,但无法将其转换为日期时间类型。有没有更好的方法可以做到这一点?

2 个答案:

答案 0 :(得分:5)

检查日期时间的Date部分是否相同。如果是这样,请相应地调整值

if(firstDate.Date.Equals(secondDate.Date))
{
    firstDate = firstDate.Date; 
         //If any time of day was set, it's now 0:00:00

    secondDate = firstDate.AddDays(1).AddSeconds(-1); 
         //This is now the day with time 23:59:59
}

此时,您可以继续定期过滤。

答案 1 :(得分:1)

如果您的SQL数据库是MS SQL Server,则可以使用DATEDIFF函数。您的SQL失败,因为您的DateTime对象都有0小时/分钟/秒,而表中的数据可能不会。

如果date1晚于或等于date2,则

DATEDIFF(DAY, date1, date2) <= 0为真,忽略小于一天的任何时间单位。