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

Ví dụ YEARWEEK () - MySQL

Trong MySQL, YEARWEEK() hàm trả về năm và tuần cho một ngày nhất định. Bạn cung cấp ngày tháng làm đối số và hàm sẽ trả về kết quả tương ứng.

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

Bạn có thể sử dụng một trong hai hình thức sau:

YEARWEEK(date)
YEARWEEK(date,mode)

Ở đâu:

  • date là ngày bạn muốn trả về số năm và 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ó.

Nếu không có chế độ nào được chỉ định, chế độ là 0 .

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

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

SELECT YEARWEEK('2021-01-25') As 'Result';

Kết quả:

+--------+
| Result |
+--------+
| 202104 |
+--------+

Đây là một ví dụ với một ngày khác.

SELECT YEARWEEK('1999-12-25') As 'Result';

Kết quả:

+--------+
| Result |
+--------+
| 199951 |
+--------+

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

Nếu bạn không chỉ định đối số thứ hai, thì YEARWEEK() hàm sử dụng 0 như một chế độ.

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 YEARWEEK('2019-11-23', 7) AS 'Mode 7';

Kết quả:

+--------+
| Mode 7 |
+--------+
| 201946 |
+--------+

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

Đây là những giá trị giống nhau có thể được sử dụng với WEEK() chức năng.

Một điểm khác biệt giữa hai hàm này là WEEK() hàm lấy chế độ mặc định của nó từ default_week_format biến hệ thống (giá trị mặc định của biến này là 0 ). YEARWEEK() mặt khác, bỏ qua cài đặt này và sử dụng 0 làm giá trị mặc định của nó (bất kể default_week_format cài đặt).

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 
  YEARWEEK(@date, 0) AS 'Mode 0',
  YEARWEEK(@date, 1) AS 'Mode 1',
  YEARWEEK(@date, 2) AS 'Mode 2',
  YEARWEEK(@date, 3) AS 'Mode 3',
  YEARWEEK(@date, 4) AS 'Mode 4',
  YEARWEEK(@date, 5) AS 'Mode 5',
  YEARWEEK(@date, 6) AS 'Mode 6',
  YEARWEEK(@date, 7) AS 'Mode 7';

Kết quả:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
| 201852 | 201901 | 201852 | 201901 | 201901 | 201853 | 201901 | 201853 |
+--------+--------+--------+--------+--------+--------+--------+--------+

Ngày 2

SET @date = '2019-01-06';
SELECT 
  YEARWEEK(@date, 0) AS 'Mode 0',
  YEARWEEK(@date, 1) AS 'Mode 1',
  YEARWEEK(@date, 2) AS 'Mode 2',
  YEARWEEK(@date, 3) AS 'Mode 3',
  YEARWEEK(@date, 4) AS 'Mode 4',
  YEARWEEK(@date, 5) AS 'Mode 5',
  YEARWEEK(@date, 6) AS 'Mode 6',
  YEARWEEK(@date, 7) AS 'Mode 7';

Kết quả:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
| 201901 | 201901 | 201901 | 201901 | 201902 | 201853 | 201902 | 201853 |
+--------+--------+--------+--------+--------+--------+--------+--------+

Ngày 3

SET @date = '2019-01-07';
SELECT 
  YEARWEEK(@date, 0) AS 'Mode 0',
  YEARWEEK(@date, 1) AS 'Mode 1',
  YEARWEEK(@date, 2) AS 'Mode 2',
  YEARWEEK(@date, 3) AS 'Mode 3',
  YEARWEEK(@date, 4) AS 'Mode 4',
  YEARWEEK(@date, 5) AS 'Mode 5',
  YEARWEEK(@date, 6) AS 'Mode 6',
  YEARWEEK(@date, 7) AS 'Mode 7';

Kết quả:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHÈN ... TRÊN CẬP NHẬT KHÓA DUPLICATE với WHERE?

  2. Tăng tốc độ đếm hàng trong MySQL

  3. Cách sao chép cơ sở dữ liệu MySQL sang máy chủ khác

  4. Truy vấn được tham số hóa cho MySQL với C #

  5. Làm thế nào để lập trình một trình kích hoạt MySQL để chèn hàng vào một bảng khác?