MySQL 中的 WEEK()函数
MySQL 中的WEEK ()函数用于查找给定日期的周数。如果日期为 NULL,WEEK()函数将返回 NULL。否则,它返回范围在 0 到 53 之间的周值。
句法 :
WEEK(date, mode)
参数:此方法接受语法中提到的两个参数,如下所述 -
- 日期 -
我们要从中提取周的日期或日期时间。 - 模式 -
它指定一周从哪一天开始。下表描述了 mode 参数的工作原理。
返回:它返回周数的值。
MODE | FIRST DAY OF WEEK | RANGE | WEEK 1 IS THE FIRST WEEK … |
---|---|---|---|
0 | Sunday | 0-53 | with a Sunday in this year |
1 | Monday | 0-53 | with 4 or more days this year |
2 | Sunday | 1-53 | with a Sunday in this year |
3 | Monday | 1-53 | with 4 or more days this year |
4 | Sunday | 0-53 | with 4 or more days this year |
5 | Monday | 0-53 | with a Monday in this year |
6 | Sunday | 1-53 | with 4 or more days this year |
7 | Monday | 1-53 | with 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_NAME | STUDENT_ID | STUDENT_NAME | ENROLL_DATE |
---|---|---|---|
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 |
现在,我们将查找每周注册课程的学生人数。
SELECT WEEK(Enroll_Date) WeekNumber,
COUNT(Student_id) Student_Enrolled
FROM Course
GROUP BY WEEK(Enroll_Date)
ORDER BY WEEK(Enroll_Date);
输出 :
WEEKNUMBER | STUDENT_ENROLLED |
---|---|
3 | 1 |
21 | 1 |
22 | 1 |
41 | 2 |
43 | 2 |
45 | 2 |
51 | 1 |