Di MySQL, Anda dapat menggunakan WEEK()
berfungsi untuk mendapatkan nomor minggu untuk tanggal tertentu. Yang saya maksud dengan “nomor minggu” adalah minggu dalam setahun.
Untuk menggunakan fungsi tersebut, cukup berikan tanggal sebagai argumen dan nomor minggu akan dikembalikan.
Anda juga memiliki opsi untuk menentukan apakah akan memulai minggu pada hari Minggu atau Senin, dan apakah minggu tersebut harus dalam kisaran 0 hingga 53 atau 1 hingga 53.
Sintaks
Sintaksnya seperti ini:
WEEK(date[,mode])
Dimana:
date
adalah tanggal yang Anda inginkan untuk mengembalikan nomor minggu.mode
adalah angka yang menentukan apakah minggu harus dimulai pada hari Minggu atau Senin dan apakah minggu harus dalam kisaran 0 hingga 53 atau 1 hingga 53. Lihat tabel di bawah untuk kemungkinan nilai mode.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh untuk didemonstrasikan.
SELECT WEEK('2021-01-25') As 'Week Number';
Hasil:
+-------------+ | Week Number | +-------------+ | 4 | +-------------+
Berikut ini contoh dengan tanggal mendekati akhir tahun.
SELECT WEEK('2021-12-25') As 'Week Number';
Hasil:
+-------------+ | Week Number | +-------------+ | 51 | +-------------+
Contoh 2 – Tentukan Mode
Jika Anda tidak menentukan argumen kedua, WEEK()
fungsi menggunakan mode seperti yang ditentukan oleh default_week_format
variabel sistem. Nilai default dari variabel ini adalah 0
.
Namun, Anda juga memiliki opsi untuk memberikan argumen kedua untuk menentukan mode mana yang akan digunakan. Contoh:
SELECT WEEK('2019-10-17', 7) AS 'Mode 7';
Hasil:
+--------+ | Mode 7 | +--------+ | 41 | +--------+
Nilai mode yang mungkin adalah sebagai berikut.
Mode | Hari pertama dalam seminggu | Rentang | Minggu 1 adalah minggu pertama … |
---|---|---|---|
0 | Minggu | 0-03 | dengan hari Minggu di tahun ini |
1 | Senin | 0-03 | dengan 4 hari atau lebih tahun ini |
2 | Minggu | 1-53 | dengan hari Minggu di tahun ini |
3 | Senin | 1-53 | dengan 4 hari atau lebih tahun ini |
4 | Minggu | 0-03 | dengan 4 hari atau lebih tahun ini |
5 | Senin | 0-03 | dengan hari Senin di tahun ini |
6 | Minggu | 1-53 | dengan 4 hari atau lebih tahun ini |
7 | Senin | 1-53 | dengan hari Senin di tahun ini |
Untuk nilai mode di mana minggu 1 adalah minggu pertama “dengan 4 hari atau lebih tahun ini”, minggu diberi nomor menurut ISO 8601:1988:
- Jika minggu yang berisi 1 Januari memiliki 4 hari atau lebih di tahun baru, itu adalah minggu 1.
- Jika tidak, ini adalah minggu terakhir dari tahun sebelumnya, dan minggu berikutnya adalah minggu 1.
Contoh 3 – Perbandingan Mode
Berikut perbandingan singkat tentang bagaimana Anda bisa mendapatkan hasil yang berbeda tergantung pada mode yang digunakan.
Tiga contoh berikut menggunakan kode yang sama, tetapi dengan tiga tanggal yang berbeda. Tanggal-tanggal ini berurutan – terjadi pada tanggal 5, 6, dan 7 Januari. Seperti yang Anda lihat, hasilnya bisa sangat berbeda tergantung pada tanggal pasti dan mode yang digunakan.
Tanggal 1
SET @date = '2019-01-05'; SELECT WEEK(@date, 0) AS 'Mode 0', WEEK(@date, 1) AS 'Mode 1', WEEK(@date, 2) AS 'Mode 2', WEEK(@date, 3) AS 'Mode 3', WEEK(@date, 4) AS 'Mode 4', WEEK(@date, 5) AS 'Mode 5', WEEK(@date, 6) AS 'Mode 6', WEEK(@date, 7) AS 'Mode 7';
Hasil:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 0 | 1 | 52 | 1 | 1 | 0 | 1 | 53 | +--------+--------+--------+--------+--------+--------+--------+--------+
Tanggal 2
SET @date = '2019-01-06'; SELECT WEEK(@date, 0) AS 'Mode 0', WEEK(@date, 1) AS 'Mode 1', WEEK(@date, 2) AS 'Mode 2', WEEK(@date, 3) AS 'Mode 3', WEEK(@date, 4) AS 'Mode 4', WEEK(@date, 5) AS 'Mode 5', WEEK(@date, 6) AS 'Mode 6', WEEK(@date, 7) AS 'Mode 7';
Hasil:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 1 | 1 | 1 | 1 | 2 | 0 | 2 | 53 | +--------+--------+--------+--------+--------+--------+--------+--------+
Tanggal 3
SET @date = '2019-01-07'; SELECT WEEK(@date, 0) AS 'Mode 0', WEEK(@date, 1) AS 'Mode 1', WEEK(@date, 2) AS 'Mode 2', WEEK(@date, 3) AS 'Mode 3', WEEK(@date, 4) AS 'Mode 4', WEEK(@date, 5) AS 'Mode 5', WEEK(@date, 6) AS 'Mode 6', WEEK(@date, 7) AS 'Mode 7';
Hasil:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 1 | 2 | 1 | 2 | 2 | 1 | 2 | 1 | +--------+--------+--------+--------+--------+--------+--------+--------+