将开始日期转换为日期时间作为日期和结束日期的开始日期到结束日期

时间:2013-04-29 05:00:55

标签: sql-server date datetime time

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全天的记录

2 个答案:

答案 0 :(得分:1)

为什么不立即使用@StartingDate-1

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

@EndDate + 1

甚至是DATEADD(d,1,@EndDate)

DATEADD (Transact-SQL)

  

返回具有指定数字间隔的指定日期(已签名)   整数)添加到该日期的指定日期部分。

答案 1 :(得分:0)

试试这个:

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

同时确保dbo.callentry.CallDateTime此列数据类型也是datetime

OR

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

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

如果是sql server 2008,如果下面只是将两边转换为日期格式和比较