C# 从日期时间选择器强制转换日期时间
我有一个SQL查询,它应该返回使用两个日期时间选择器选择的两个日期之间的一些数据,但是当两个日期相等时,它应该返回当天的数据。我的查询没有返回任何内容,因为我的日期是C# 从日期时间选择器强制转换日期时间,c#,sql-server,datetimepicker,C#,Sql Server,Datetimepicker,我有一个SQL查询,它应该返回使用两个日期时间选择器选择的两个日期之间的一些数据,但是当两个日期相等时,它应该返回当天的数据。我的查询没有返回任何内容,因为我的日期是mm/dd/yyyy hh:mm:ss AM/PM格式。我使用datetime选择器中的以下日期格式 dtpEndDate.Value.ToShortDateString() 例如,当我的结束日期为2014年4月13日时,它返回的数据在2014年4月13日00:00:00之前,但我希望数据在2014年4月13日23:59:59 我
mm/dd/yyyy hh:mm:ss AM/PM
格式。我使用datetime选择器中的以下日期格式
dtpEndDate.Value.ToShortDateString()
例如,当我的结束日期为2014年4月13日时,它返回的数据在2014年4月13日00:00:00
之前,但我希望数据在2014年4月13日23:59:59
我有以下疑问
SELECT
sum(isnull(ExpectedAmt, 0)) AS Payment FROM Sales
WHERE (a.SellDate >= @StartDate) AND (a.SellDate <= @EndDate)
选择
作为销售付款的金额(isnull(ExpectedAmt,0))
其中(a.SellDate>=@StartDate)和(a.SellDate检查日期时间的部分是否相同。如果相同,则相应调整值
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
}
此时,您可以继续常规筛选。检查日期时间的部分是否相同。如果相同,请相应调整值
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
}
此时,您可以继续常规筛选。如果您的SQL数据库是MS SQL Server,则可以使用DATEDIFF函数。您的SQL失败,因为您的DateTime对象都有0小时/分钟/秒,而表中的数据可能没有
DATEDIFF(DAY,date1,date2)如果您的SQL数据库是MS SQL Server,您可以使用DATEDIFF函数。您的SQL失败,因为您的DateTime对象都有0小时/分/秒,而表中的数据大概没有
DATEDIFF(日期、日期1、日期2)如果您希望始终获取在seconddate发生的所有事务,我不需要检查是否相等,检查seconddate是否为0:00:00,如果是,则执行相同的addday addsecondsfix@Talspaugh27:这是一个很好的通用技巧,但如果我读对了,它不在当前问题的范围内(我不总是:)很可能在某个时刻,时间部分被切断(因为OP似乎使用>=运算符)。这使得我的答案毫无用处,但由于没有特别提及,我不知道:)我是在这行之外工作的“例如,当我的结束日期是2014年4月13日,它返回的数据是2014年4月13日00:00:00之前的数据,但我希望数据在2014年4月13日23:59:59之前”如果您希望始终获取在seconddate发生的所有事务,我不需要检查是否相等,检查seconddate是否为0:00:00,如果是,则执行相同的addday addsecondsfix@Talspaugh27:这是一个很好的一般性技巧,但如果我读对了,它不在当前问题的范围内(我不总是:))很可能在某个时刻,时间部分被切断(因为OP似乎使用>=运算符)。这使得我的答案毫无用处,但由于没有特别提及,我不知道:)我是在这行之外工作的“例如,当我的结束日期是2014年4月13日,它返回的数据是2014年4月13日00:00:00之前的数据,但我希望数据在2014年4月13日23:59:59之前”