Ini akan mendapatkan minggu (Minggu - Sabtu) kuartal:
SELECT TO_CHAR( SYSDATE, 'YYYY-"Q"Q-"W"' )
|| ( 7 + TRUNC( SYSDATE + 1, 'IW' ) - TRUNC( TRUNC( SYSDATE, 'Q' ) + 1, 'IW' ) ) / 7;
AS "Current Time"
FROM DUAL
Penjelasan :
- Anda dapat menemukan hari Minggu yang tepat atau tepat sebelum tanggal tertentu menggunakan
NEXT_DAY( TRUNC( date_value ), 'SUNDAY' ) - 7
(yang bergantung padaNLS_TERRITORY
setting) atauTRUNC( date_value + 1, 'IW' ) - 1
(yang lebih pendek dan tidak bergantung pada pengaturan apa pun). TRUNC( date_value, 'Q' )
memberikan tanggal hari pertama kuartal yang berisivalue
tanggal (yaitu 1 Januari, 1 April, 1 Juli, atau 1 Oktober).- Menggabungkan keduanya, hari Minggu pada-atau-tepat-sebelum hari pertama kuartal diberikan oleh
TRUNC( TRUNC( date_value, 'Q' ) + 1, 'IW' ) - 1
- Oleh karena itu, jumlah hari antara hari Minggu pada-atau-tepat-sebelum awal kuartal dan hari Minggu pada-atau-tepat-sebelum tanggal tertentu adalah:
( TRUNC( date_value + 1, 'IW' ) - 1 ) - ( TRUNC( TRUNC( date_value, 'Q' ) + 1, 'IW' ) - 1 )
- yang dapat disederhanakan dengan membatalkan-1
istilah. - Perbedaan jumlah minggu hanyalah angka yang dibagi dengan 7 (tetapi memberikan nilai yang diindeks 0 dan Anda ingin angka minggu dari kuartal tersebut diindeks 1; Anda menambahkan 1 minggu ke hasil atau, sebelum melakukan pembagian, tambahkan 7 hari).