Di MariaDB, YEARWEEK()
adalah fungsi tanggal dan waktu bawaan yang mengembalikan tahun dan minggu untuk tanggal tertentu.
Ia menerima dua argumen; tanggal Anda ingin mengekstrak tahun dan 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. Selain itu, tahun dalam hasil mungkin berbeda dari tahun dalam argumen tanggal untuk minggu pertama dan terakhir dalam setahun.
Sintaks
Sintaksnya seperti ini:
YEARWEEK(date), YEARWEEK(date,mode)
Yang juga bisa dinyatakan seperti ini:
YEARWEEK(date[,mode])
Dimana date
adalah ekspresi tanggal untuk mendapatkan tahun dan 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 YEARWEEK()
tanpa menentukan mode, itu akan menggunakan mode 0
.
Contoh
Berikut ini contoh pemanggilan YEARWEEK()
tanpa menentukan mode:
SELECT YEARWEEK('2030-01-01');
Hasil:
+------------------------+| YEARWEEK('2030-01-01') |+------------------------+| 202952 |+-----------------------+
Dalam hal ini tahun dan minggu yang dihasilkan berasal dari tahun sebelumnya.
Tentukan Mode
Berikut ini contoh menentukan mode:
SELECT YEARWEEK('2030-01-01', 1);
Hasil:
+---------------------------+| YEARWEEK('2030-01-01', 1) |+---------------------------+| 203001 |+-----------------------+
Kali ini, hasilnya berbeda.
Mari kita jalankan semua mode untuk tanggal yang sama:
SELECT
YEARWEEK('2030-01-01', 0),
YEARWEEK('2030-01-01', 1),
YEARWEEK('2030-01-01', 2),
YEARWEEK('2030-01-01', 3),
YEARWEEK('2030-01-01', 4),
YEARWEEK('2030-01-01', 5),
YEARWEEK('2030-01-01', 6),
YEARWEEK('2030-01-01', 7);
Hasil (menggunakan keluaran vertikal):
YEARWEEK('2030-01-01', 0):202952YEARWEEK('2030-01-01', 1):203001YEARWEEK('2030-01-01', 2):202952YEARWEEK('2030-01-01 ', 3):203001YEARWEEK('2030-01-01', 4):203001YEARWEEK('2030-01-01', 5):202953YEARWEEK('2030-01-01', 6):203001YEARWEEK('2030-01 -01', 7):202953
Nilai Tanggal-waktu
YEARWEEK()
fungsi juga bekerja dengan nilai datetime:
SELECT YEARWEEK('2030-08-01 10:30:45');
Hasil:
+----------------------------------+| YEARWEEK('2030-08-01 10:30:45') |+--------------------------------- +| 203030 |+---------------------------------+
Tanggal Numerik
Dimungkinkan juga untuk melewatkan tanggal sebagai angka, asalkan masuk akal sebagai tanggal.
Contoh
SELECT YEARWEEK(20301125);
Hasil:
+--------------------+| MINGGU TAHUN (20301125) |+------+| 203047 |+--------------------+
Atau bahkan yang berikut (yang menggunakan tahun dua digit):
SELECT YEARWEEK(301125);
Hasil:
+------------------+| YEARWEEK(301125) |+------------------+| 203047 |+------------------+
Tapi itu harus masuk akal sebagai kencan. Inilah yang terjadi jika saya menambah bagian hari menjadi hari yang tidak valid:
SELECT YEARWEEK(20301135);
Hasil:
+--------------------+| YEARWEEK (20301135) |+--------------------+| NULL |+--------------------+1 baris di set, 1 peringatan (0,000 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
YEARWEEK('2030/06/25'),
YEARWEEK('2030,06,25'),
YEARWEEK('2030:06:25'),
YEARWEEK('2030;06!25');
Hasil (menggunakan keluaran vertikal):
YEARWEEK('2030/06/25'):203025YEARWEEK('2030,06,25'):203025YEARWEEK('2030:06:25'):203025YEARWEEK('2030;06!25'):203025Tanggal Saat Ini
Kita dapat melewati
NOW()
sebagai argumen datetime untuk menggunakan tanggal saat ini:SELECT NOW(), YEARWEEK(NOW());
Hasil:
+---------------------+-----------------+| SEKARANG() | MINGGU TAHUN(SEKARANG()) |+---------------------+-----------------+| 2021-05-17 09:08:23 | 202120 |+---------------------+-----------------+Argumen Tidak Valid
Saat memberikan argumen yang tidak valid,
YEARWEEK()
mengembalikannull
:SELECT YEARWEEK('2030-65-78');
Hasil:
+------------------------+| YEARWEEK('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
YEARWEEK()
dengan jumlah argumen yang salah, atau tanpa memberikan argumen apa pun, menghasilkan kesalahan:SELECT YEARWEEK();
Hasil:
ERROR 1582 (42000):Jumlah parameter salah dalam panggilan ke fungsi asli 'YEARWEEK'Dan contoh lain:
SELECT YEARWEEK('2030-12-10', 1, 2);
Hasil:
ERROR 1582 (42000):Jumlah parameter salah dalam panggilan ke fungsi asli 'YEARWEEK'