現在の日付から以前の日付までの月を取得したい。
SELECT MONTHS_BETWEEN(to_date(fld_valid_from,'yyyy-mm-dd hh24:mi:ss'),TO_DATE(sysdate, 'yyyy-mm-dd hh24:mi:ss')) num_months
FROM tbl_customer
しかし、それは機能していません。それが正しいかどうかはわかりません。
どのようなエラー メッセージが表示されますか? TO_DATE コマンドを使用せずに 2 つの変数を比較してみましたか?
SELECT MONTHS_BETWEEN (trunc(fld_valid_from),trunc(sysdate))
FROM tbl_customer
これは、列 fld_valid_from が日付型の場合に機能します。日付を別の日付と比較しています。TO_DATE を使用して、文字列データ型を日付データ型に変換します。
TRUNC 関数を使用すると、日付からタイムスタンプを削除して、日付のみを取得します。
SELECT SYSDATE, TRUNC(SYSDATE) FROM DUAL;
SYSDATE TRUNC(SYSDATE)
---------------------------------------
16/07/2013 10:45:53 16/07/2013
それが役に立てば幸い。
よろしく。