📜  MySQL 中的 WEEK()函数

📅  最后修改于: 2022-05-13 01:55:02.757000             🧑  作者: Mango

MySQL 中的 WEEK()函数

MySQL 中的WEEK ()函数用于查找给定日期的周数。如果日期为 NULL,WEEK()函数将返回 NULL。否则,它返回范围在 0 到 53 之间的周值。

句法 :

WEEK(date, mode)

参数:此方法接受语法中提到的两个参数,如下所述 -

  • 日期 -
    我们要从中提取周的日期或日期时间。
  • 模式 -
    它指定一周从哪一天开始。下表描述了 mode 参数的工作原理。

返回:它返回周数的值。

MODEFIRST DAY OF WEEKRANGEWEEK 1 IS THE FIRST WEEK …
0Sunday0-53with a Sunday in this year
1Monday0-53with 4 or more days this year
2Sunday1-53with a Sunday in this year
3Monday1-53with 4 or more days this year
4Sunday0-53with 4 or more days this year
5Monday0-53with a Monday in this year
6Sunday1-53with 4 or more days this year
7Monday1-53with a Monday in this year

示例-1:
2020 年 10 月 15 日使用 WEEK()函数查找当前周数。

SELECT WEEK(NOW()) AS Current_Week;

输出 :

Current_Week
41

因此,当前周数是 41。

示例 2 :
使用 WEEK()函数从给定日期时间查找周。

SELECT WEEK('2010-05-20 08:09:22') AS Week;

输出 :

Week
20

因此,在此示例中,周数为 20。

示例 3 :
当日期为 NULL 时,使用 WEEK()函数从给定的日期时间查找周。

SELECT WEEK(NULL) AS Week;

输出 :

Week
NULL

示例 4:
在此示例中,我们将查找每周注册课程的学生人数。为了演示创建一个名为 Course 的表。

CREATE TABLE Course(
Course_name  VARCHAR(100) NOT NULL,
Student_id INT NOT NULL,  
Student_name VARCHAR(100) NOT NULL,
Enroll_Date Date NOT NULL,
PRIMARY KEY(Student_id)
);

现在向课程表中插入一些数据 -

INSERT INTO  
Course(Course_Name, Student_id, Student_name, Enroll_Date)
VALUES
('CS101', 161011, 'Amit Singh', '2019-1-26'),
('CS101', 161029, 'Arun Kumar', '2019-5-30'),
('CS101', 161031, 'Sanya Jain', '2019-6-08'),
('CS101', 161058, 'Riya Shah', '2019-10-15'),
('CS101', 162051, 'Amit Sharma', '2019-10-18'),
('CS101', 161951, 'Sayan Singh', '2019-10-30'),
('CS101', 167051, 'Rishi Jana', '2019-11-02'),
('CS101', 168001, 'Aniket Dravid', '2019-11-10'),
('CS101', 168051, 'Rita Singh', '2019-11-13'),
('CS101', 166051, 'Kalyan Ghandi', '2019-12-26');

表 –课程

COURSE_NAMESTUDENT_IDSTUDENT_NAMEENROLL_DATE
CS101161011Amit Singh2019-1-26
CS101161029Arun Kumar2019-5-30
CS101161031Sanya Jain2019-6-08
CS101161058Riya Shah2019-10-15
CS101162051Amit Sharma2019-10-18
CS101161951Sayan Singh2019-10-30
CS101167051Rishi Jana2019-11-02
CS101168001Aniket Dravid2019-11-10
CS101168051Rita Singh2019-11-13
CS101166051Kalyan Ghandi2019-12-26

现在,我们将查找每周注册课程的学生人数。

SELECT WEEK(Enroll_Date) WeekNumber,  
COUNT(Student_id) Student_Enrolled
FROM Course
GROUP BY WEEK(Enroll_Date)
ORDER BY WEEK(Enroll_Date);

输出 :

WEEKNUMBERSTUDENT_ENROLLED
31
211
221
412
432
452
511