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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。