oracle 10g dbを使用すると、次のようなテーブルがあります。
create table x(
ID NUMBER(10) primary key,
wedding DATE NOT NULL
);
どうやって
select * from x where wedding is in june 2008???
おそらく簡単なことだと思いますが、今のところ満足のいく答えは見つかりませんでした。助けていただければ幸いです。
使用する:
SELECT *
FROM x
WHERE x.wedding BETWEEN TO_DATE('2008-JUN-01', 'YYYY-MON-DD')
AND TO_DATE('2008-JUL-01', 'YYYY-MON-DD')
TO_DATE
を使用すると、時刻部分が00:00:00の日付が作成されます。ロジックを使用して現在の日付を深夜の1秒前に修正する場合を除き、終了日は1日前である必要があります。未テスト:
TO_DATE('2008-JUN-30', 'YYYY-MON-DD') + 1 - (1/(24*60*60))
これにより、2008年6月30日に1日が加算され、次に1秒が減算されて30-Jun-2008 23:59
の最終日が返されます。
参照:
これはANSISQLであり、バージョン9iの時点でOracleによってサポートされています。
_SELECT *
FROM x
WHERE EXTRACT(YEAR FROM wedding) = 2008
AND EXTRACT(MONTH FROM wedding) = 06
_
Oracle固有のTO_CHAR()
を使用した従来のソリューション:
_SELECT *
FROM x
WHERE TO_CHAR(wedding, 'YYYY-MMM') = '2008-JUN'
_
(後者の解決策は、恐竜がまだ地球を歩いているときにサポートされていました)