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

Bagaimana WEEK() Bekerja di MariaDB

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

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

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 1

Dan 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

  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 ATAN2() Bekerja di MariaDB

  2. Fungsi AVG() di MariaDB

  3. Cara Membuat Database MySQL atau MariaDB Anda Sangat Tersedia di AWS dan Google Cloud

  4. Bagaimana TIME_TO_SEC() Bekerja di MariaDB

  5. Bagaimana ACOS() Bekerja di MariaDB