0

ここに画像の説明を入力SQL で、日付を検索するための select ステートメントを記述します。私はここにいて、このような選択ステートメントも含めて....

                  select * from test where           
(
(
(DATEDIFF (day,@dat1,req_frmdate)=0 or DATEDIFF (day,@dat2,req_todate)=0)
and
(DATEDIFF (HOUR,@dat1,req_frmdate)=0 or DATEDIFF (HOUR,@dat2,req_todate)=0)
and 
(DATEDIFF (MINUTE,@dat1,req_frmdate)=0 or DATEDIFF (MINUTE,@dat2,req_todate)=0)
)       
or
  (
( @dat1 between req_frmdate and req_todate) or
( @dat2 between req_frmdate and req_todate) or
(req_frmdate between @dat1 and @dat2) or
( req_todate between @dat1 and @dat2)
)       
        )

しかし、私が日付を渡すとき、それは時間を考慮していません。このクエリは正しいですか?たとえば、 @date1='2013-02-20 09:00' および @date2= '2013-02-20 12:00' の日付を渡しているが、この日付と時刻にデータベースにレコードがない場合req_frmdate='2013-02-20 13:00' および req_todate= '2013-02-20 16:00' でデータベースに記録します

テーブルのスクリーン ショットでは、@date1='2013-02-20 9:00' と @date2='2013-02-20 12:00' のような 2 つの日付を渡すと、テーブルにそのレコードがあります。レコードは私の select ステートメントに入っていますが、私のクエリである日付が異なるはずです。

4

1 に答える 1

0

レコードがIF both REQ_FRMDATEのみを表示し、2 つのパラメーターの日付の間にあると仮定すると、句REQ_TODATEを使用できます。BETWEEN

DECLARE @dat1 DATETIME SET @dat1 ='2013-02-20 09:00.000'
DECLARE @dat2 DATETIME SET @dat2 ='2013-02-20 12:00.000'
SELECT * 
FROM test 
WHERE
   (req_frmdate BETWEEN @dat1 AND @dat2)
   AND (req_todate BETWEEN @dat1 AND @dat2)
于 2013-02-11T08:39:01.350 に答える