Di MariaDB, WEEK()
adalah fungsi tanggal dan waktu bawaan yang mengembalikan minggu dari ekspresi tanggal tertentu.
Ia menerima dua argumen; tanggal Anda ingin mengekstrak minggu dari, dan argumen mode opsional untuk menentukan mode yang akan digunakan dalam hasil.
Ini mengembalikan minggu sebagai angka dalam kisaran 0
ke 53
atau 1
ke 53
, tergantung pada mode yang digunakan.
Sintaks
Sintaksnya seperti ini:
WEEK(date[,mode])
Dimana date
adalah ekspresi tanggal untuk mendapatkan minggu, dan mode
adalah argumen opsional yang memungkinkan Anda menentukan mode yang akan digunakan.
Mode
mode
opsional argumen menentukan apakah minggu dimulai pada hari Minggu atau Senin, dan apakah nilai yang dikembalikan harus dalam kisaran 0
ke 53
atau dari 1
ke 53
.
Argumen mode dapat berupa salah satu dari berikut ini:
Mode | hari pertama dalam seminggu | Rentang | Minggu 1 adalah minggu pertama dengan… |
---|---|---|---|
0 | Minggu | 0-03 | hari Minggu di tahun ini |
1 | Senin | 0-03 | lebih dari 3 hari tahun ini |
2 | Minggu | 1-53 | hari Minggu di tahun ini |
3 | Senin | 1-53 | lebih dari 3 hari tahun ini (sesuai dengan ISO 8601:1988) |
4 | Minggu | 0-03 | lebih dari 3 hari tahun ini |
5 | Senin | 0-03 | Senin di tahun ini |
6 | Minggu | 1-53 | lebih dari 3 hari tahun ini |
7 | Senin | 1-53 | Senin di tahun ini |
Jika argumen mode dihilangkan, nilai default_week_format
variabel sistem digunakan.
Mari kita periksa nilai default_week_format
saya variabel sistem:
SELECT @@default_week_format;
Hasil:
+------------------------+| @@default_week_format |+-----------------------+| 0 |+------------------------+
Sekarang, ketika saya menjalankan WEEK()
tanpa menentukan mode, itu akan menggunakan mode 0
.
Contoh
Berikut ini contoh pemanggilan WEEK()
tanpa menentukan mode:
SELECT WEEK('2030-01-01');
Hasil:
+--------------------+| MINGGU('2030-01-01') |+--------------------+| 0 |+--------------------+
Tentukan Mode
Berikut ini contoh menentukan mode:
SELECT WEEK('2030-01-01', 1);
Hasil:
+------------------------+| MINGGU('2030-01-01', 1) |+-----------------------+| 1 |+------------------------+
Kali ini, hasilnya adalah 1
bukannya 0
.
Mari kita jalankan semua mode untuk tanggal yang sama:
SELECT
WEEK('2030-01-01', 0),
WEEK('2030-01-01', 1),
WEEK('2030-01-01', 2),
WEEK('2030-01-01', 3),
WEEK('2030-01-01', 4),
WEEK('2030-01-01', 5),
WEEK('2030-01-01', 6),
WEEK('2030-01-01', 7);
Hasil (menggunakan keluaran vertikal):
WEEK('2030-01-01', 0):0WEEK('2030-01-01', 1):1WEEK('2030-01-01', 2):52WEEK('2030-01-01 ', 3):1MINGGU('2030-01-01', 4):1MINGGU('2030-01-01', 5):0MINGGU('2030-01-01', 6):1MINGGU('2030-01 -01', 7):53
Nilai Tanggal-waktu
WEEK()
fungsi juga bekerja dengan nilai datetime:
SELECT WEEK('2030-08-01 10:30:45');
Hasil:
+-----------------------------+| WEEK('2030-08-01 10:30:45') |+------------------------------+| 30 |+-----------------------------+
Tanggal Numerik
Dimungkinkan juga untuk melewatkan tanggal sebagai angka, asalkan masuk akal sebagai tanggal.
Contoh
SELECT WEEK(20301125);
Hasil:
+----------------+| MINGGU (20301125) |+----------------+| 47 |+----------------+
Atau bahkan yang berikut (yang menggunakan tahun dua digit):
SELECT WEEK(301125);
Hasil:
+-------------+| MINGGU (301125) |+--------------+| 47 |+--------------+
Tapi itu harus masuk akal sebagai kencan. Inilah yang terjadi jika saya menambah bagian hari menjadi hari yang tidak valid:
SELECT WEEK(20301135);
Hasil:
+----------------+| MINGGU (20301135) |+----------------+| NULL |+----------------+1 baris di set, 1 peringatan (0,001 detik)
Itu mengembalikan null
dengan peringatan.
Mari kita lihat peringatannya:
SHOW WARNINGS;
Hasil:
+---------+------+----------------------------- ---------+| tingkat | Kode | Pesan |+---------+------+--------------------------------------- --------+| Peringatan | 1292 | Nilai datetime salah:'20301135' |+---------+------+------------------------ --------------+
Pembatas Lainnya
Anda dapat menggunakan pembatas lain untuk tanggal. MariaDB cukup pemaaf dalam hal pembatas tanggal. Berikut adalah beberapa contoh yang valid:
SELECT
WEEK('2030/06/25'),
WEEK('2030,06,25'),
WEEK('2030:06:25'),
WEEK('2030;06!25');
Hasil (menggunakan keluaran vertikal):
WEEK('2030/06/25'):25WEEK('2030,06,25'):25WEEK('2030:06:25'):25WEEK('2030;06!25'):25Tanggal Saat Ini
Kita dapat melewati
NOW()
sebagai argumen datetime untuk menggunakan tanggal saat ini:SELECT NOW(), WEEK(NOW());
Hasil:
+---------------------+-------------+| SEKARANG() | MINGGU(SEKARANG()) |+---------------------+-------------+| 2021-05-17 08:36:12 | 20 |+---------------------+-------------+Argumen Tidak Valid
Saat memberikan argumen yang tidak valid,
WEEK()
mengembalikannull
:SELECT WEEK('2030-65-78');
Hasil:
+--------------------+| MINGGU('2030-65-78') |+------+| NULL |+--------------------+1 baris di set, 1 peringatan (0,000 detik)Ayo tunjukkan peringatannya:
SHOW WARNINGS;
Hasil:
+---------+------+----------------------------- -----------+| tingkat | Kode | Pesan |+---------+------+--------------------------------------- ----------+| Peringatan | 1292 | Nilai datetime salah:'2030-65-78' |+---------+------+-------------------- --------------------+Argumen Tidak Ada
Memanggil
WEEK()
dengan jumlah argumen yang salah, atau tanpa memberikan argumen apa pun, menghasilkan kesalahan:SELECT WEEK();
Hasil:
ERROR 1064 (42000):Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MariaDB Anda untuk sintaks yang tepat untuk digunakan di dekat ')' di baris 1Dan contoh lain:
SELECT WEEK('2030-12-10', 1, 2);
Hasil:
ERROR 1064 (42000):Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MariaDB Anda untuk sintaks yang tepat untuk digunakan di dekat ' 2)' di baris 1