當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


MySQL YEARWEEK()用法及代碼示例

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).

相關用法


注:本文由純淨天空篩選整理自jana_sayantan大神的英文原創作品 YEARWEEK() Function in MySQL。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。