MySQL中的YEARWEEK()函数用于查找给定日期的年和周。如果日期为NULL,则YEARWEEK()函数将返回NULL。否则,它将返回年份值(范围从1000到9999)和星期值(范围从0到53)。
用法:
YEARWEEK(date, mode)
参数:此方法接受上面提到和下面描述的两个参数:
- date:我们要从中提取年和周的日期或日期时间。
- mode:它指定一周中的哪一天开始。下表描述了mode参数的工作方式。
模式 | 一周的第一天 | 范围 | 第一周是第一周… |
---|---|---|---|
0 | Sunday | 0-53 | 今年的一个星期天 |
1 | Monday | 0-53 | 今年有四天或以上 |
2 | Sunday | 1-53 | 今年的一个星期天 |
3 | Monday | 1-53 | 今年有四天或以上 |
4 | Sunday | 0-53 | 今年有四天或以上 |
5 | Monday | 0-53 | 在今年的一个星期一 |
6 | Sunday | 1-53 | 今年有四天或以上 |
7 | Monday | 1-53 | 在今年的一个星期一 |
返回值:它一起返回年和周的值。
示例1:在28/09/2020使用Year()函数查找当前年和周。
SELECT YEARWEEK(NOW()) AS Current_YearWeek;
输出:
+------------------+ | Current_YearWeek | +------------------+ | 202039 | +------------------+ 1 row in set (0.00 sec)
因此,当前年为2020,星期为39。
示例2:使用YEARWEEK()函数从给定的日期时间查找年份和星期。
SELECT YEARWEEK('2018-04-22 08:09:22') AS Year_Week ;
输出:
+-----------+ | Year_Week | +-----------+ | 201816 | +-----------+
因此,在此示例中,年份是2018,星期数是16。
示例3:当日期为NULL时,使用YEARWEEK()函数从给定的日期时间查找年份和星期。
SELECT YEARWEEK(NULL) AS Year_Week ;
输出:
+-----------+ | Year_Week | +-----------+ | NULL | +-----------+
示例4:在此示例中,我们将查找一年中每周一次的课程注册学生人数。为了演示创建一个名为的表。
课程:
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) );
现在将一些数据插入到Product表中:
INSERT INTO Course(Course_Name, Student_id, Student_name, Enroll_Date) VALUES ( 'CS101', 161011, 'Amit Singh', '2019-11-26' ), ( 'CS101', 161029, 'Arun Kumar', '2019-11-30' ), ( 'CS101', 161031, 'Sanya Jain', '2019-12-08' ), ( 'CS101', 161058, 'Riya Shah', '2019-12-15' ), ( 'CS101', 162051, 'Amit Sharma', '2019-12-18' ), ( 'CS101', 161951, 'Sayan Singh', '2019-12-26' ), ( 'CS101', 167051, 'Rishi Jana', '2020-01-02' ), ( 'CS101', 168001, 'Aniket Dravid', '2020-01-10' ), ( 'CS101', 168051, 'Rita Singh', '2020-01-13' ), ( 'CS101', 166051, 'Kalyan Ghandi', '2020-01-26' ) ;
因此,我们的表如下所示:
mysql> select * from Course; +-------------+------------+---------------+-------------+ | Course_name | Student_id | Student_name | Enroll_Date | +-------------+------------+---------------+-------------+ | CS101 | 161011 | Amit Singh | 2019-11-26 | | CS101 | 161029 | Arun Kumar | 2019-11-30 | | CS101 | 161031 | Sanya Jain | 2019-12-08 | | CS101 | 161058 | Riya Shah | 2019-12-15 | | CS101 | 161951 | Sayan Singh | 2019-12-26 | | CS101 | 162051 | Amit Sharma | 2019-12-18 | | CS101 | 166051 | Kalyan Ghandi | 2020-01-26 | | CS101 | 167051 | Rishi Jana | 2020-01-02 | | CS101 | 168001 | Aniket Dravid | 2020-01-10 | | CS101 | 168051 | Rita Singh | 2020-01-13 | +-------------+------------+---------------+-------------+ 10 rows in set (0.00 sec)
现在,我们将查找每周和每年的课程注册学生人数。
SELECT YEARWEEK(Enroll_Date) YearandWeek, COUNT(Student_id) Student_Enrolled FROM Course GROUP BY YEARWEEK(Enroll_Date) ORDER BY YEARWEEK(Enroll_Date);
输出:
+-------------+------------------+ | YearandWeek | Student_Enrolled | +-------------+------------------+ | 201947 | 2 | | 201949 | 1 | | 201950 | 2 | | 201951 | 1 | | 201952 | 1 | | 202001 | 1 | | 202002 | 1 | | 202004 | 1 | +-------------+------------------+ 8 rows in set (0.00 sec).
相关用法
- MySQL LEAD() and LAG()用法及代码示例
- MySQL BIN()用法及代码示例
- MySQL LAST_DAY()用法及代码示例
- MySQL WEEKOFYEAR()用法及代码示例
- MySQL MOD()用法及代码示例
- MySQL Group_CONCAT()用法及代码示例
- MySQL DEFAULT()用法及代码示例
- MySQL AES_ENCRYPT()用法及代码示例
- MySQL AES_DECRYPT()用法及代码示例
- MySQL MD5用法及代码示例
- MySQL COMPRESS( )用法及代码示例
- MySQL PASSWORD用法及代码示例
- MySQL OLD_PASSWORD用法及代码示例
- MySQL DES_DECRYPT()用法及代码示例
- MySQL DES_ENCRYPT()用法及代码示例
- MySQL DECODE( )用法及代码示例
- MySQL ENCODE( )用法及代码示例
- MySQL SHA1( )用法及代码示例
注:本文由纯净天空筛选整理自jana_sayantan大神的英文原创作品 YEARWEEK() Function in MySQL。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。