4

日付を含む列と、テーブル内の他の列があります。私はできるようにしたい:

前年の 9 月 1 日から今年の 7 月 30 日までの日付に一致するすべての行を表示します。

日付の特定の構文がよくわからないだけで、何をする必要があるかを知っています..

SELECT * FROM xx
WHERE ASM_DATE BETWEEN TRUNC(SYSDATE-1,'YY') AND TRUNC(SYSDATE,'YY');

それは私がこれまで持っているものです..

SYSDATE と 'YYYY' を使用して現在の年を取得し、前年に -1 を使用できることはわかっていますが、それに加えて月を指定する方法がわかりません。どんな助けでも素晴らしいでしょう。

4

3 に答える 3

9
SELECT
  *
FROM
  xxx
WHERE
      ASM_DATE >= ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'), -12)
  AND ASM_DATE <  ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'),   1)
于 2012-04-30T13:18:41.613 に答える
3

Oracle ADD_MONTHS 関数を見てください。

Oracleリファレンスに日時関数の完全なリストがあります。

于 2012-04-30T13:19:37.423 に答える
1

たとえば、現在の月は2015 年 4 月です

前月までの 1 年間のデータ ( 2014 年 2 月1 日から2015 年 3 月 31 日まで):

SELECT *
FROM xx
WHERE 
ASM_DATE BETWEEN ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -14) 
AND
LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1))

現在の月を含む 1 年間のデータ ( 2014 年3 月 1 日から2015 年 4 月 30 日まで):

SELECT *
FROM xx
WHERE 
ASM_DATE BETWEEN ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -13) 
AND
LAST_DAY(TRUNC(SYSDATE, 'MM'))
于 2015-04-06T05:03:04.303 に答える