2

日付列を含むテーブルがあります。指定された日付に基づいてレコードを取得する必要があります。

現在、クエリを使用したとき:

select * from workingemployee_data where created_date like '20-Jan-2012'

2012年1月20日にcreated_dateを持つレコードを取得しています

しかし、特定の日付 (つまり、2012 年 1 月 20 日) の 10 日前に作成されたレコードを取得したいと考えています。

これについて私に提案してください。

4

3 に答える 3

4

これにより、今日から10日前までのすべてのレコードが得られます。

SELECT *
FROM workingemployee
WHERE created_date BETWEEN sysdate - INTERVAL '10' DAY
                       AND sysdate

これにより、正確に10日前に入力されたすべてのレコードが得られます。

SELECT *
FROM workingemployee
WHERE created_date = sysdate - INTERVAL '10' DAY

sysdate必要に応じて、正確な日付に置き換えてください。

于 2013-02-03T08:26:28.987 に答える
4
  1. likeを使用し、使用しないのはなぜ=ですか?
  2. created_dateそれがタイプであると仮定すると、DATEによる暗黙的な変換に頼るのは悪い習慣NLS_DATE_FORMATです (これは、日付と文字列を比較するときに起こることです)
  3. dd-mon-yyyy月数のNLS_LANGUAGEより適切な使用法に従って定義されるため、クエリには適した形式ではありませんmm

したがって、@ mvpの回答を使用するか、次のようにします。

SELECT *
FROM workingemployee
WHERE trunc(created_date) = to_date('20-01-2013', 'dd-mm-yyyy') - 10
于 2013-02-03T08:41:40.197 に答える
1

SELECT * FROM workingemployee WHERE created_date > sysdate - INTERVAL '10' DAY;

于 2015-10-20T09:39:31.273 に答える