2017-04-01 3 views
0

私はそれを通常の方法で行いました。私は別の方法でクエリを書く方法を取得しません。2009年4月1日より前に表示された注文を表示します。2つの異なる方法でクエリを書きます。

SELECT Order#, Shipdate 
FROM Orders 
WHERE Shipdate < '01-APR-2009'; 

同じクエリを書き込む別の方法は何でしょうか?

+0

通常の方法は、あなたがしたように文字列ではなく日付と(回答で示されるように)比較することです。暗黙の変換の有無にかかわらず、どのように異なる必要がありますか?異なる日付形式ですか?または、他の何か? (そして注文が*置かれたときに質問があった場合は出荷日を見たいと思っていますか?) –

答えて

1

SHIPDATEと仮定するとdateないstring、UTSAVは(不平等の右辺はDATEになるように、必要に応じて補正して、クエリである)を書いたおそらく何

SELECT Order#, Shipdate FROM Orders 
WHERE Shipdate < to_date('01-APR-2009','DD-MON-YYYY'); 
2

、この変形例であり、 :文字列は、単一引用符で囲まれている正確な形式yyyy-mm-dd、無偏差PEでなければならない日付リテラル構文(DATE <string>を用い

SELECT Order#, Shipdate FROM Orders 
WHERE Shipdate < date '2009-04-01'; 

返された;ダッシュはダッシュでなければならず、/または.などではありません。

0

あなたは論理的に同じクエリに対して、否定を使用することができます。

SELECT Order#, Shipdate 
FROM Orders 
WHERE NOT Shipdate >= DATE '2009-04-01'; 

それとも、別途日付要素になります:そういったことは上のインデックスを妨げる

SELECT Order#, Shipdate 
FROM Orders 
WHERE EXTRACT(year FROM Shipdate) < 2009 
OR (EXTRACT(year FROM Shipdate) = 2009 
    AND EXTRACT(month FROM Shipdate) < 4); 

ものの日付列が使用されています。

関連する問題