Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Ví dụ về WEEK () - MySQL

Trong MySQL, bạn có thể sử dụng WEEK() hàm để lấy số tuần cho một ngày nhất định. Theo "số tuần", tôi có nghĩa là tuần trong năm.

Để sử dụng hàm, chỉ cần cung cấp ngày làm đối số và số tuần sẽ được trả về.

Bạn cũng có tùy chọn chỉ định bắt đầu tuần vào Chủ Nhật hay Thứ Hai và liệu tuần phải nằm trong phạm vi 0 đến 53 hay 1 đến 53.

Cú pháp

Cú pháp như sau:

WEEK(date[,mode])

Ở đâu:

  • date là ngày bạn muốn trả về số tuần.
  • mode là một con số chỉ định liệu tuần sẽ bắt đầu vào Chủ nhật hay Thứ Hai và liệu tuần phải nằm trong phạm vi 0 đến 53 hay 1 đến 53. Xem bảng bên dưới để biết các giá trị chế độ có thể có.

Ví dụ 1 - Cách sử dụng cơ bản

Đây là một ví dụ để chứng minh.

SELECT WEEK('2021-01-25') As 'Week Number';

Kết quả:

+-------------+
| Week Number |
+-------------+
|           4 |
+-------------+

Dưới đây là một ví dụ với một ngày gần cuối năm.

SELECT WEEK('2021-12-25') As 'Week Number';

Kết quả:

+-------------+
| Week Number |
+-------------+
|          51 |
+-------------+

Ví dụ 2 - Chỉ định một Chế độ

Nếu bạn không chỉ định đối số thứ hai, thì WEEK() hàm sử dụng chế độ như được chỉ định bởi default_week_format biến hệ thống. Giá trị mặc định của biến này là 0 .

Tuy nhiên, bạn cũng có tùy chọn cung cấp đối số thứ hai để chỉ định chế độ nào sẽ sử dụng. Ví dụ:

SELECT WEEK('2019-10-17', 7) AS 'Mode 7';

Kết quả:

+--------+
| Mode 7 |
+--------+
|     41 |
+--------+

Các giá trị chế độ khả thi như sau.

Chế độ Ngày đầu tuần Phạm vi Tuần 1 là tuần đầu tiên…
0 Chủ nhật 0-53 với một ngày Chủ nhật trong năm này
1 Thứ Hai 0-53 với 4 ngày trở lên trong năm nay
2 Chủ nhật 1-53 với một ngày Chủ nhật trong năm này
3 Thứ Hai 1-53 với 4 ngày trở lên trong năm nay
4 Chủ nhật 0-53 với 4 ngày trở lên trong năm nay
5 Thứ Hai 0-53 với một ngày Thứ Hai trong năm nay
6 Chủ nhật 1-53 với 4 ngày trở lên trong năm nay
7 Thứ Hai 1-53 với một ngày Thứ Hai trong năm nay

Đối với các giá trị chế độ trong đó tuần 1 là tuần đầu tiên "có 4 ngày trở lên trong năm nay", các tuần được đánh số theo ISO 8601:1988:

  • Nếu tuần có ngày 1 tháng 1 có 4 ngày trở lên trong năm mới thì đó là tuần 1.
  • Nếu không, đây là tuần cuối cùng của năm trước và tuần tiếp theo là tuần 1.

Ví dụ 3 - So sánh các chế độ

Dưới đây là so sánh nhanh về cách bạn có thể nhận được các kết quả khác nhau tùy thuộc vào chế độ đang được sử dụng.

Ba ví dụ sau sử dụng cùng một mã, nhưng với ba ngày khác nhau. Những ngày này liên tiếp - chúng xảy ra vào ngày 5, 6 và 7 của tháng Giêng. Như bạn có thể thấy, kết quả có thể khá khác nhau tùy thuộc vào ngày chính xác và chế độ được sử dụng.

Ngày 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';

Kết quả:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
|      0 |      1 |     52 |      1 |      1 |      0 |      1 |     53 |
+--------+--------+--------+--------+--------+--------+--------+--------+

Ngày 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';

Kết quả:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
|      1 |      1 |      1 |      1 |      2 |      0 |      2 |     53 |
+--------+--------+--------+--------+--------+--------+--------+--------+

Ngày 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';

Kết quả:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
|      1 |      2 |      1 |      2 |      2 |      1 |      2 |      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. mysql Ràng buộc khóa ngoại bị lỗi hình thành không chính xác

  2. Cách chuyển đổi IPv6 từ nhị phân để lưu trữ trong MySQL

  3. Cách hoạt động của hàm MID () trong MySQL

  4. MySQL INSERT IF (câu lệnh if tùy chỉnh)

  5. Làm thế nào để có SQL động trong thủ tục lưu trữ MySQL