MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Bagaimana YEARWEEK() Bekerja di MariaDB

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'):203025 

Tanggal 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() mengembalikan null :

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'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana SUBSTRING_INDEX() Bekerja di MariaDB

  2. 4 Fungsi yang Mengekstrak Mikrodetik dari Nilai Waktu di MariaDB

  3. Unit Tanggal &Waktu Komposit MariaDB Dijelaskan

  4. MAX() Fungsi di MariaDB

  5. SKEMA MariaDB () Dijelaskan