转换的开始日期为datetime的日期和结束日期的开始到结束的一天
Store PROCEDURE
--para--
@StartingDate DateTime = NULL,
@EndingDate DateTime = NULL
--condition --
dbo.callentry.CallDateTime BETWEEN ISNULL(@StartingDate,
dbo.callentry.CallDateTime) and ISNULL(@EndingDate,dbo.callentry.CallDateTime)
问:转换的开始日期为datetime的日期和结束日期的开始到结束的一天
当我通过日期'2012-09-17'
从日期选择器如对@StartingDate,
和同为结束日期。它是比较2012-09-17 00:00:00.000 to 2012-09-17 00:00:00.000
- 将返回任何记录
我要的是在全天记录2012年9月17日
试试这个:
dbo.callentry.CallDateTime >=ISNULL(@StartingDate,
dbo.callentry.CallDateTime) and dbo.callentry.CallDateTime <=ISNULL(@EndingDate,dbo.callentry.CallDateTime)
还要确保dbo.callentry.CallDateTime此列的数据类型也是日期时间
OR
而且从你的问题阅读。我认为当strt和结束日期相同时,你只需要那天的所有记录。如果开始和结束日期是相同的,为什么不能你刚才使用如下:
convert(date,dbo.callentry.CallDateTime) =convert(date,ISNULL(@StartingDate,
dbo.callentry.CallDateTime))
在SQL Server 2008的情况下,若跌破只是转换的两侧,只是日期格式annd比较
“convert both双方约会格式和比较“ - 工作!谢谢 ! – 2013-04-29 05:28:03
为什么不直接使用@StartingDate-1
呢?
甚至DATEADD(d,-1,@StartingDate)
或者@EndDate + 1
甚至DATEADD(d,1,@EndDate)
返回指定日期与指定数目的时间间隔(带符号的 整数)加入指定日期部分那天。
在这种情况下不会返回2天的数据? – AnandPhadke 2013-04-29 05:05:21
它不会返回2天的数据;它将返回一整天的数据以及任何记录,其中包含一天之后和午夜之间的日期。要忽略这些,你可以重构使用两个单独的WHERE子句而不是BETWEEN:'AND dbo.callentry.CallDateTime 2013-04-29 09:15:43
使用完整的日期**时间** - 即“2012-09-17 00:00:00”和“2012-09-17 23:59:59”。 – Tim 2013-04-29 05:03:34