Saya mencoba menampilkan 12 bulan dari 5 tahun di bulan Maret. Satu-satunya cara agar saya bisa melakukannya dengan benar adalah dengan:
select to_char(add_months(sysdate, level-51),'YYYY-MM')
from dual
connect by level <= 12
Tampilan mana:
2014-03
2014-04
2014-05
...
Bagaimanapun aku butuh kencan.
Tapi coba gunakan:
select to_date(to_char(add_months(sysdate, level-51),'YYYY-MM'),'YYYY-MM')
from dual
connect by level <= 12
Berikan bulannya:
2014-03-01
2014-04-01
2014-05-01
...
Pertanyaan Apakah ada yang punya solusi?
Sunting:
Sedang mengerjakan
alter session set nls_date_format='YYYY-MM';
Perbaiki masalahnya tetapi bagaimana cara mengatur format ini dalam prosedur tersimpan?
CROSS JOIN
menggunakan tabel kalender dan EID Anda yang berbeda, bukan perulangan for. Dan mengapa Anda peduli tentang memformat tipe datetime ketika Anda mencoba memasukkan ke tabel? Setelah dimasukkan, itu hanya tipe tanggal-waktu, dan akan memiliki semua bagian: tahun, bulan, hari, jam, menit, detik. Cari dan baca lebih lanjut tentang tipe data Oracle DATE. Jadi Anda hanya perluSELECT TRUNC(ADD_MONTHS(SYSDATE, LEVEL-51), 'MM') FROM dual CONNECT BY LEVEL <= 12
- person Pham X. Bach   schedule 23.05.2018