1
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)

问题 :

当我将'2012-09-17'日期选择器中的日期作为参数传递@StartingDate,并且与结束日期相同时。它正在比较2012-09-17 00:00:00.000 to 2012-09-17 00:00:00.000- 将不返回任何记录

我想要的是全天的记录 2012-09-17

4

2 回答 2

1

为什么不直接使用@StartingDate-1呢?

甚至DATEADD(d,-1,@StartingDate)

或者@EndDate + 1

甚至DATEADD(d,1,@EndDate)

日期添加 (Transact-SQL)

返回指定的日期,并将指定的数字间隔(有符号整数)添加到该日期的指定日期部分。

于 2013-04-29T05:03:25.397 回答
0

尝试这个:

dbo.callentry.CallDateTime >=ISNULL(@StartingDate,
dbo.callentry.CallDateTime) and dbo.callentry.CallDateTime <=ISNULL(@EndingDate,dbo.callentry.CallDateTime)

还要确保 dbo.callentry.CallDateTime 此列数据类型也是日期时间

或者

还阅读您的问题。我认为当 strt 和结束日期相同时,您只需要当天的所有记录。如果开始日期和结束日期相同,为什么不能像下面这样使用:

convert(date,dbo.callentry.CallDateTime) =convert(date,ISNULL(@StartingDate,
    dbo.callentry.CallDateTime))

如果是 sql server 2008,如果在下面,只需将双方都转换为日期格式并进行比较

于 2013-04-29T05:04:16.497 回答