私は列を日付に変換し、現在の月と列の月を比較する必要があります。oracleは現在の日付と日付を比較します
列は次のようになります。
Date
0117
0217
0317
..
私はそれを変換する方法を知っているが、それを比較傾けます。
select date,to_date(date, 'mmyy')
from table
where ????
私は列を日付に変換し、現在の月と列の月を比較する必要があります。oracleは現在の日付と日付を比較します
列は次のようになります。
Date
0117
0217
0317
..
私はそれを変換する方法を知っているが、それを比較傾けます。
select date,to_date(date, 'mmyy')
from table
where ????
あなたはto_date()
を使用して日付に値を変換することができます:私はそれが含まれているものを明確にするために、列mmyy
に改名
select to_date(mmyy, 'MMYY')
from t;
注意。
これは、月の最初の日を返します。
to_date()
の結果は、現在の日付と比較することができます。
where to_char(to_date(mmyy, 'MMYY'), 'YYYY-MM') = to_char(sysdate, 'YYYY-MM')
または、より簡単に:
あなたが月にすべてを一致させたい場合はwhere to_date(mmyy, 'MMYY') = trunc(sysdate)
は、単に適切な比較を使用します。たとえば、月の日付の最初にマッチします
あなたの答えをありがとうが、私はすべてのレコードが1ヶ月間から表示されるように月を比較したいです。 – on55
'trunc(sysdate)'は、月の初めではなく、1日の始まりに切り詰められますので、その月の最初の日にクエリを実行した場合にのみ動作します。 – MT0
@ MT0。 。 。その月の初めは 'to_date()'への変換が日付を月の初めにするためです。 'TRUNC'のデフォルトが 'TRUNC(datevalue、' DD ')であるため、クエリーが月の最初の日に実行されない限り、to_date(mmyy、' MMYY ')= trunc(sysdate)'はどこの行とも一致しません。 –
現在の日付を文字列に変換し、文字列の比較を使用できます(これにより、列のインデックスを使用できます)。
SELECT *
FROM your_table
WHERE your_date_column = TO_CHAR(SYSDATE, 'MMYY')
かあなたは(あなたが1を作成した場合、あなたの列にインデックスを使用することはありませんが、関数ベースのインデックスを使用することができた)日付に列を変換し、それを比較することができます
SELECT *
FROM your_table
WHERE TO_DATE(your_date_column, 'MMYY') = TRUNC(SYSDATE, 'MM')
は何ですか代表する日? –