30

私はいつも ORACLE SQL クエリの日付形式と混同され、Google で一緒に数分を費やしています。

たとえば、ES_DATE として日付列があり、データ型 TIMESTAMP(6) WITH LOCAL TIME ZONE の 27-APR-12 11.52.48.294030000 AM としてデータを保持します。

ここに画像の説明を入力

その特定の日のデータを取得するための単純な選択クエリを作成しましたが、何も返されません。誰かが私を説明できますか?

select * from table
where es_date=TO_DATE('27-APR-12','dd-MON-yy')

また

select * from table where es_date = '27-APR-12';
4

3 に答える 3

64

to_date()00:00:00 の日付を返すため、比較対象の日付から分を「削除」する必要があります。

select * 
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')

trunc(es_date)定期的に行っていることであれば、おそらくインデックスを作成したいと思うでしょう。

デフォルトの日付形式が別のものに変更された場合、リテラル'27-APR-12'は非常に簡単に失敗する可能性があります。したがって、常にto_date()適切なフォーマット マスク (または ANSI リテラル: date '2012-04-27')を使用するようにしてください。

暗黙のデータ型変換を使用し、依存しないことは正しく行いましたがto_date()、 to_date() の使用には、 format が原因でまだ微妙な落とし穴があります'dd-MON-yy'

TO_DATE('27-MAY-12','dd-MON-yy')NLS_LANG がドイツ語に設定されている場合など、言語設定が異なると、これは簡単に失敗する可能性があります。異なる言語で異なる可能性のある形式のものは避けてください。4 桁の年と数字のみを使用します'dd-mm-yyyy''yyyy-mm-dd'

于 2013-07-04T21:53:01.847 に答える
9

同じ日付形式を使用していて、select query where date in oracle がある場合:

   select count(id) from Table_name where TO_DATE(Column_date)='07-OCT-2015';

オラクルが提供するTo_DATE

于 2015-10-07T12:48:22.837 に答える
3

このコマンドは、データを取得することで使用できます。これにより、データが抽出されます...

select * from employees where to_char(es_date,'dd/mon/yyyy')='17/jun/2003';

于 2020-01-21T05:16:19.790 に答える