0
SELECT months_between(TO_DATE(SYSDATE,'DD-MM-YYYY'),TO_DATE(DATE_COLUMN,'DD-MM-YYYY')) FROM TABLE_A;

1.「数値が必要な場所に数値以外の文字が見つかりました」というエラーが表示されました

また、nullの扱い方も.. table_Aのdate_columnがnullの場合、デフォルトの日付を入れたい。

2.

SELECT MONTHS_BETWEEN(TO_DATE(SYSDATE,'DD-MM-YYYY'),TO_DATE(DATE_COLUMN,'DD-MM-YYYY')) FROM TABLE_A;

日付間の月を計算した後、ケースステートメントを使用して日付範囲でレコードを分類したい..

たとえば..一連のレコードの months_between が 22 の場合..すべてのレコードに「0-24」というフラグを設定したい..同様に、months_ between が 34 の場合..フラグ「 24 」を設定したい-48', この範囲に入るすべてのレコード..

4

3 に答える 3

2

sysdate日付に変換する必要はありません。これを試して:

SELECT months_between(trunc(SYSDATE), TO_DATE(DATE_COLUMN,'DD-MM-YYYY'))

問題は、Oracle の日付のデフォルト形式が月名を使用することです。と言うto_date(sysdate, . . .)と、最初の引数が文字列に変換されてから日付に戻されます。

ちなみにtrunc()関係ありませんが、の日の部分を抜き出したいようでしsysdateたので残しました。

編集:

がすでに日付の場合date_columnは、次を使用します。

SELECT months_between(trunc(SYSDATE), DATE_COLUMN)
于 2014-10-30T11:36:14.867 に答える