2016-09-18 11 views
0

変数がデータベース内の別々の列の時間範囲の間にあるかどうかをチェックするクエリを作成しようとしています。もしあれば、その行を返したいと思います。範囲内のSQLチェック時間値

私は、次を使用する場合、私は

declare @mytime datetime = '20160917 07:56' 
select * 
from OEEEvent oe 
inner join RSBizWare.dbo.OEEConfigEvent ce on oe.lOEEConfigEventId = ce.lOEEConfigEventId 
inner join RSBizWare.dbo.OEELOVCodeVal rs on oe.sStartVal = rs.sDescription and ce.lOEEIntRSSqlId=rs.lOEELOVCodeId 
inner join RSBizWare.dbo.OEEStateConfig mms on rs.lMachineState = mms.lOEEStateConfigId 

where tstart > @mytime 

enter image description here

次のような結果を得るため、私は、変数@mytime時間範囲の間にあるかどうかを確認するためのクエリを変更する場合しかし、私は結果を得るません。 @mytime変数は8amに変更されており、そこにデータがあることがわかります。

enter image description here

+0

投稿しないでください**画像!! **。元のコード/結果をテキスト形式で投稿すると、貼り付けをコピーして問題を複製したり、テストしたりするのが簡単になります –

+0

秒を含む日付を比較しますか? –

+0

こんにちはprdp、私はちょうどmyDate変数がデータベースのtstartとtendカラムによって作成された日付範囲の間にあるかどうかを確認したい – GlenCloncurry

答えて

1

次のように条件をどこで変数を使用してみてください。

WHERE @mytime BETWEEN tstart AND tend 

そして唯一の時間と分を対処するために、それが動作するはず試してください。

WHERE LEFT(@mytime, 17) BETWEEN LEFT(tstart, 17) AND LEFT(tend, 17) 
0

は、以下を使用しますdatetime列の秒数を調整するコード

このような

何かがあなたが

declare @mytime datetime = '20160917 07:56' 

Select .. 
where @mytime between DATEADD(MINUTE, DATEDIFF(MINUTE, 0, tstart), 0) and 
              DATEADD(MINUTE, DATEDIFF(MINUTE, 0, tEnd), 0) 
0
以下のようなあなたの条件を変更して

役立つはずです。あなたがBETWEEN表現したいときにお使いの場合には第2の条件は(> @mytimeを傾向がある)

 WHERE tstart >@mytime and @mytime <tend 
0

データ範囲を満足しないだろう、それはSTARTTIME < yourtime <終了時刻です。あなたが逆の方法で文を書きながら、それは

startTime < yourTime AND yourTime < endTime 

に等しい

startTime > yourTime and yourTime > endTime 

だから句に

tstart < @mytime AND @mytime < tend 

あなたはBETWEEN演算子を使用することができる場所を変更、しかしBETWEENオペレータは、両方の範囲を含む何卒ご了承下さい。それがあなたの要求を満たすかどうかを確認してください。

関連する問題