我有一个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)
我尝试投放数据时间,但无法将其转换为日期时间类型。有没有更好的方法可以做到这一点?
答案 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
为真,忽略小于一天的任何时间单位。