2011-10-31 4 views
1

たとえば、予約が24時間以内に完了するかどうかを確認する方法については、どうすればいいですか?PLSQL - トランケーション機能 - 24時間以内に予約する

私の予約テーブルには解決策を見つけるのに役立つかもしれない重要なフィールドがあります。現時点ではstudiono、タイトル、日付、時間、時間

を、私は次のことを試してみました:

select StudioNo 
from Bookings 
where sysdate - "DATE" <1 
and "TIME" - trunc("Time") + trunc(systimestamp) > systimestamp; 

しかし、私はこれがうまくいくとは思わない。私はこれを正しくしていますか?

何か助けていただければ幸いです。あなたのデータベース構造が何であるかを知らず

答えて

3

基本的に
select StudioNo 
from Bookings 
where to_date(date || time, 'dd-mon-yyyyhh24:mi:ss') < sysdate +1 
and to_date(date || time, 'dd-mon-yyyyhh24:mi:ss') > sysdate 

、あなたの2つの別々の日付と時刻の列から単一の日付/時刻フィールドを作成します(私はここで仮定している文字列である)、そして比較それはsysdate + 1

+2

古い予約が削除されていない限り、そこに '> sysdate'条件を設定することもできます。 – MatBailie

+0

yf、updated ... – StevieG

+0

大変ありがとうございました:) – George

2

第1に、あなたのBookingsテーブルに日付と時間のための別々の列がある特別な理由はありますか? Oracleデータ型のDATEは、これらの両方を単一の列に含めます。これにより、必要なクエリがはるかに簡単になります:

SELECT StudioNo 
FROM Bookings 
WHERE BookingDate BETWEEN SYSDATE AND SYSDATE+1; 
+0

古い予約が削除されていない限り、そこに '> sysdate'条件を設定したいかもしれません。 – MatBailie

+0

@Dems - 私はすでにこのおかげで、' BETWEEN ' – ninesided

+0

実際、元の質問によると、基準は「24時間以内だ」と言われています。今は* 24時間前*と24時間後*を意味すると解釈します。だから、私には正しい述語は次のようになります: WhereDateDate-1とSYSDATE + 1; –

関連する問題