2012-03-07 14 views
4

次のようなクエリを作成したいが、正しくコーディングする方法がわからない StartTimeの1時間以内にすべての予約を返すようにしたい私は思いついた:SQLより大きい、等しい、より小さい

SELECT BookingId, StartTime 
FROM Booking 
WHERE StartTime <=> 1.00 

可能ですか?またはそれの周りに道がありますか?

ウェブ上に見つかったすべてのアイブは、同じクエリ内でより大きい、等しい、より小さいすべてを使用していませんでした。

+0

をworkLなければならないあなたは、あなたがいない指定した時刻の1時間のどちらかの側を意味していますか? – Phil

+0

人があなたよりも(より大きい)、あなたの年齢(等しくない)、またはあなたよりも若い(より少ない)場合、その人は惑星上の生きている*人あなたは死者の年齢を定義したい)。 – JayC

+0

気づいていない人、混乱している人がいる場合、OPには「<' and the '>」があります。 – Malachi

答えて

10

あなたは、SQLサーバーを使用すると仮定すると:

WHERE StartTime BETWEEN DATEADD(HOUR, -1, GetDate()) 
        AND DATEADD(HOUR, 1, GetDate()) 
4

開始時刻が日時タイプであれば、あなたは明らかにあなたが時間のために独自の値を使用したいと思う

SELECT BookingId, StartTime 
FROM Booking 
WHERE StartTime >= '2012-03-08 00:00:00.000' 
AND StartTime <= '2012-03-08 01:00:00.000' 

のようなものを使用することができますが、これは上限と下限の両方を含むその1時間の期間内のすべてを与えるはずです。

GETDATE()関数を使用して、現在の日付を取得することができます。このような

+0

ANDが機能するかどうか聞いていました。 – user1081326

+0

@ user1081326 ANDはうまくいくはずですが、他の2つの答えに示されているように、文の間を使用することをお勧めします。 – Pepe

2

気にいらないが

SELECT BookingId, StartTime 
FROM Booking 
WHERE StartTime between dateadd(hour, -1, getdate()) and getdate() 
2
declare @starttime datetime = '2012-03-07 22:58:00' 

SELECT BookingId, StartTime 
FROM Booking 
WHERE ABS(DATEDIFF(minute, StartTime, @starttime)) <= 60 
関連する問題