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'日付ピッカーから日付をparaとして渡し@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)

DATEADD (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 この列のデータ型も datetime であることを確認してください

また

また、あなたの質問から読んでください。strt と end date が同じ場合、その日のすべてのレコードが必要なだけだと思います。開始日と終了日が同じ場合、以下のように使用できないのはなぜですか。

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

SQL Server 2008の場合、以下の場合、両側を日付形式に変換して比較します

于 2013-04-29T05:04:16.497 に答える