Sebagai judul mengatakan, saya ingin menemukan cara untuk memeriksa mana dari data set adalah 6 bulan terakhir dari SYSDATE melalui query.
SELECT * FROM OrderArchive
WHERE OrderDate <= '31 Dec 2014';
I've mencoba mengikuti tapi itu kembali kesalahan yang mengatakan saya format tanggal yang salah. Namun, memasukkan data-data yang saya digunakan bahwa format tanggal seperti yang diminta/diinginkan dan tidak punya masalah.
Kesalahan pada Baris Perintah : 10 Kolom : 25
Blockquote
laporan Kesalahan -
SQL Error: ORA-01861: literal tidak sesuai format string 01861. 00000 - "harfiah tidak sesuai format string"
*Penyebab: Literal di input harus sama panjang sebagai literal di format string (dengan pengecualian dari ruang kosong). Jika "FX" pengubah telah diaktifkan, secara literal harus sama persis, dengan tidak ada tambahan spasi.
*Tindakan: Memperbaiki format string untuk mencocokkan literal.
Sebagai query string literal, dan dengan asumsi anda benar disimpan sebagai TANGGAL
anda harus menggunakan tanggal literal:
SELECT * FROM OrderArchive
WHERE OrderDate <= DATE '2015-12-31'
Jika anda ingin menggunakan TO_DATE
(karena, misalnya, permintaan anda nilai tidak literal), saya sarankan anda untuk secara eksplisit mengatur NLS_DATE_LANGUAGE parameter seperti anda menggunakan KAMI singkatan nama bulan. Dengan cara itu, itu tidak't break di beberapa lokal Instalasi Oracle:
SELECT * FROM OrderArchive
WHERE OrderDate <= to_date('31 Dec 2014', 'DD MON YYYY',
'NLS_DATE_LANGUAGE = American');
Anda perlu mengkonversi string ke date menggunakan to_date()
fungsi
SELECT * FROM OrderArchive
WHERE OrderDate <= to_date('31-Dec-2014','DD-MON-YYYY');
ATAU
SELECT * FROM OrderArchive
WHERE OrderDate <= to_date('31 Dec 2014','DD MON YYYY');
ATAU
SELECT * FROM OrderArchive
WHERE OrderDate <= to_date('2014-12-31','yyyy-MM-dd');
Ini akan bekerja hanya jika OrderDate
disimpan dalam format Tanggal
. Jika itu adalah Varchar
anda harus menerapkan to_date()
func pada kolom juga suka
SELECT * FROM OrderArchive
WHERE to_date(OrderDate,'yyyy-Mm-dd') <= to_date('2014-12-31','yyyy-MM-dd');