1

40 日を超える日付のみを選択するにはどうすればよいですか?

SELECT name, gender, WardNo, StartOfOccupancy, EndOfOccupancy  
  FROM Patient, Occupancy  
  WHERE EndOfOccupancy > 40 StartOfOccupancy;  

その人が占有を終了する前に40日以上仕事をしていたデータを表示したいのですが、さまざまなバリエーションを試しましたが、最終的な行を作成する方法がわかりず、このエラーが発生し続けます:

ORA-00932: inconsistent datatypes: expected DATE got NUMBER

助けてくれてありがとう。

4

2 に答える 2

2

境界ケースをチェックして、必要なものが得られているかどうかを確認する必要があります。Oracle DATE データ型を使用している場合は、TRUNC(EndOfOccupancy) と TRUNC(StartOfOccupancy) を比較して時間コンポーネントを取り除くことができます。

SELECT name, gender, WardNo, StartOfOccupancy, EndOfOccupancy  
  FROM Patient, Occupancy  
  WHERE TRUNC(EndOfOccupancy) - TRUNC(StartOfOccupancy) >= 40; 
于 2012-08-04T12:17:12.690 に答える
0

試す

SELECT name, gender, WardNo, StartOfOccupancy, EndOfOccupancy
FROM Patient, Occupancy
WHERE EndOfOccupancy > DATE_ADD(StartOfOccupancy, INTERVAL 40 DAY)
于 2012-08-04T12:05:58.787 に答える