Mysql中的日期時間函數小結
目錄
- 1 CURDATE()函數
- 2 CURTIME()函數
- 3 NOW()函數
- 4 UNIX_TIMESTAMP(date)函數
- 5 FROM_UNIXTIME(timestamp)函數
- 6 UTC_DATE()函數
- 7 UTC_TIME()函數
- 8 YEAR(date)函數
- 9 MONTH(date)函數
- 10 MONTHNAME(date)函數
- 11 DAY(date)函數
- 12 DAYNAME(date)函數
- 13 DAYOFWEEK(date)函數
- 14 WEEKDAY(date)函數
- 15 WEEK(date)函數
- 16 WEEKOFYEAR(date)函數
- 17 DAYOFYEAR(date)函數
- 18 DAYOFMONTH(date)函數
- 19 QUARTER(date)函數
- 20 HOUR(time)函數
- 21 MINUTE(time)函數
- 22 SECOND(time)函數
- 23 EXTRACT(type FROM date)函數
- 24 TIME_TO_SEC(time)函數
- 25 SEC_TO_TIME(seconds)函數
- 26 DATE_ADD(date,INTERVAL expr type)函數
- 27 DATE_SUB(date,INTERVAL expr type)函數
- 28 ADDTIME(time1,time2)函數
- 29 SUBTIME(time1,time2)函數
- 30 DATEDIFF(date1,date2)函數
- 31 FROM_DAYS(N)函數
- 32 LAST_DAY(date)函數
- 33 MAKEDATE(year,n)函數
- 34 MAKETIME(hour,minute,second)函數
- 35 PERIOD_ADD(time,n)函數
- 36 TO_DAYS(date)函數
- 37 DATE_FORMAT(date,format)函數
- 38 TIME_FORMAT(time,format)函數
- 39 GET_FORMAT(date_type,format_type)函數
- 40 STR_TO_DATE(str,format)函數
MySQL中內置了大量的日期和時間函數,能夠靈活、方便地處理日期和時間數據,本節就簡單介紹一下MySQL中內置的日期和時間函數。
1 CURDATE()函數
CURDATE()函數用于返回當前日期,只包含年、月、日部分,格式為YYYY-MM-DD。使用示例如下:
mysql> SELECT CURDATE();+------------+| CURDATE() |+------------+| 2019-12-11 |+------------+1 row in set (0.00 sec)
CURRENT_DATE()函數的作用與CURDATE()函數相同,不再贅述。
2 CURTIME()函數
CURTIME()函數用于返回當前時間,只包含時、分、秒部分,格式為HH:MM:SS。使用示例如下:
mysql> SELECT CURTIME();+-----------+| CURTIME() |+-----------+| 11:27:44 |+-----------+1 row in set (0.00 sec)
CURRENT_TIME()函數的作用與CURTIME函數相同,不再贅述。
3 NOW()函數
NOW()函數用于返回當前日期和時間,包含年、月、日、時、分、秒,格式為YYYY-MM-DD HH:MM:SS。使用示例如下:
mysql> SELECT NOW();+---------------------+| NOW() |+---------------------+| 2019-12-15 11:29:22 |+---------------------+1 row in set (0.00 sec)
CURRENT_TIMESTAMP()函數、LOCALTIME()函數、LOCALTIMESTAMP()函數、SYSDATE()函數的作用與NOW()函數相同,不再贅述。
4 UNIX_TIMESTAMP(date)函數
將date轉化為UNIX時間戳。使用示例如下:
mysql> SELECT UNIX_TIMESTAMP(now());+-----------------------+| UNIX_TIMESTAMP(now()) |+-----------------------+| 1576380910 |+-----------------------+1 row in set (0.01 sec)mysql> SELECT UNIX_TIMESTAMP(CURDATE());+---------------------------+| UNIX_TIMESTAMP(CURDATE()) |+---------------------------+|1576339200 |+---------------------------+1 row in set (0.00 sec)mysql> SELECT UNIX_TIMESTAMP(CURTIME());+---------------------------+| UNIX_TIMESTAMP(CURTIME()) |+---------------------------+|1576380969 |+---------------------------+1 row in set (0.00 sec)
5 FROM_UNIXTIME(timestamp)函數
FROM_UNIXTIME(timestamp)函數將UNIX時間戳轉化為日期時間,格式為YYYY-MM-DD HH:MM:SS,與UNIX_TIMESTAMP(date)函數互為反函數。使用示例如下:
mysql> SELECT FROM_UNIXTIME(1576380910);+---------------------------+| FROM_UNIXTIME(1576380910) |+---------------------------+| 2019-12-15 11:35:10 |+---------------------------+1 row in set (0.00 sec)
6 UTC_DATE()函數
UTC_DATE()函數用于返回UTC日期。使用示例如下:
mysql> SELECT UTC_DATE();+------------+| UTC_DATE() |+------------+| 2019-12-15 |+------------+1 row in set (0.00 sec)
也可以返回YYYYMMDD格式的日期。使用示例如下:
mysql> SELECT UTC_DATE()+0;+--------------+| UTC_DATE()+0 |+--------------+| 20191215 |+--------------+1 row in set (0.00 sec)
7 UTC_TIME()函數
UTC_TIME()函數用于返回UTC時間。使用示例如下:
mysql> SELECT UTC_TIME();+------------+| UTC_TIME() |+------------+| 06:39:00 |+------------+1 row in set (0.00 sec)
8 YEAR(date)函數
YEAR(date)函數用于返回日期所在的年份,取值返回為1970~2069。使用示例如下:
mysql> SELECT YEAR(NOW());+-------------+| YEAR(NOW()) |+-------------+|2019 |+-------------+1 row in set (0.00 sec)
注意:00~69會被轉化為2000~2069,70~99會被轉化為1970~1999。
9 MONTH(date)函數
MONTH(date)函數用于返回日期對應的月份,取值返回為1~12。使用示例如下:
mysql> SELECT MONTH(NOW());+--------------+| MONTH(NOW()) |+--------------+| 12 |+--------------+1 row in set (0.00 sec)
10 MONTHNAME(date)函數
MONTHNAME(date)函數用于返回日期所在月份的英文名稱。使用示例如下:
mysql> SELECT MONTHNAME(NOW());+------------------+| MONTHNAME(NOW()) |+------------------+| December |+------------------+1 row in set (0.00 sec)
11 DAY(date)函數
DAY(date)函數只返回日期。使用示例如下:
mysql> SELECT DAY(NOW());+------------+| DAY(NOW()) |+------------+| 15 |+------------+1 row in set (0.00 sec)
12 DAYNAME(date)函數
DAYNAME(date)函數用于返回日期對應星期的英文名稱。使用示例如下:
mysql> SELECT DAYNAME(NOW());+----------------+| DAYNAME(NOW()) |+----------------+| Sunday |+----------------+1 row in set (0.00 sec)mysql> SELECT DAYNAME("2020-01-01");+-----------------------+| DAYNAME("2020-01-01") |+-----------------------+| Wednesday |+-----------------------+1 row in set (0.00 sec)
13 DAYOFWEEK(date)函數
DAYOFWEEK(date)函數用于返回日期對應的一周中的索引值。1表示星期日,2表示星期一,以此類推。使用示例如下:
mysql> SELECT DAYOFWEEK(NOW());+------------------+| DAYOFWEEK(NOW()) |+------------------+| 1 |+------------------+1 row in set (0.00 sec)mysql> SELECT DAYOFWEEK("2020-01-01");+-------------------------+| DAYOFWEEK("2020-01-01") |+-------------------------+|4 |+-------------------------+1 row in set (0.00 sec)
14 WEEKDAY(date)函數
WEEKDAY(date)函數返回日期對應的一周中的索引值。0表示星期一,1表示星期二,以此類推。使用示例如下:
mysql> SELECT WEEKDAY(NOW());+----------------+| WEEKDAY(NOW()) |+----------------+| 6 |+----------------+1 row in set (0.00 sec)mysql> SELECT WEEKDAY("2020-01-01");+-----------------------+| WEEKDAY("2020-01-01") |+-----------------------+| 2 |+-----------------------+1 row in set (0.00 sec)
15 WEEK(date)函數
WEEK(date)函數返回給定日期是一年中的第幾周。使用示例如下:
mysql> SELECT WEEK(NOW());+-------------+| WEEK(NOW()) |+-------------+| 50 |+-------------+1 row in set (0.00 sec)
16 WEEKOFYEAR(date)函數
WEEKOFYEAR(date)函數返回日期位于一年中的第幾周。使用示例如下:
mysql> SELECT WEEKOFYEAR(NOW());+-------------------+| WEEKOFYEAR(NOW()) |+-------------------+| 50 |+-------------------+1 row in set (0.00 sec)
17 DAYOFYEAR(date)函數
DAYOFYEAR(date)函數返回日期是一年中的第幾天。使用示例如下:
mysql> SELECT DAYOFYEAR(NOW());+------------------+| DAYOFYEAR(NOW()) |+------------------+| 349 |+------------------+1 row in set (0.00 sec)
18 DAYOFMONTH(date)函數
DAYOFMONTH(date)函數返回日期位于所在月份的第幾天。使用示例如下:
mysql> SELECT DAYOFMONTH(NOW());+-------------------+| DAYOFMONTH(NOW()) |+-------------------+| 15 |+-------------------+1 row in set (0.00 sec)
19 QUARTER(date)函數
QUARTER(date)函數返回日期對應的季度,范圍為1~4。使用示例如下:
mysql> SELECT QUARTER(NOW());+----------------+| QUARTER(NOW()) |+----------------+| 4 |+----------------+1 row in set (0.00 sec)
20 HOUR(time)函數
HOUR(time)函數返回指定時間的小時。使用示例如下:
mysql> SELECT HOUR(NOW());+-------------+| HOUR(NOW()) |+-------------+| 11 |+-------------+1 row in set (0.00 sec)
21 MINUTE(time)函數
MINUTE(time)函數返回指定時間的分鐘,取值范圍0~59。使用示例如下:
mysql> SELECT MINUTE(NOW());+---------------+| MINUTE(NOW()) |+---------------+| 45 |+---------------+1 row in set (0.00 sec)
22 SECOND(time)函數
SECOND(time)函數返回指定時間的秒數,取值范圍0~59。使用示例如下:
mysql> SELECT SECOND(NOW());+---------------+| SECOND(NOW()) |+---------------+| 22 |+---------------+1 row in set (0.00 sec)
23 EXTRACT(type FROM date)函數
EXTRACT(type FROM date)函數返回指定日期中特定的部分,type指定返回的值。其中,type的取值如表11-1所示。
表11-1 EXTRACT(type FROM date)函數中type的取值與含義
注意:當EXTRACT(type FROM date)函數中的type取值為MINUTE_SECOND時,表示返回分鐘和秒值,當date中的分鐘為12,秒為12時,返回的結果為1212。也就是說,將分鐘后面直接拼接上秒值。type取值為其他帶有下劃線的值時,也遵循同樣的規律。
使用示例如下:
mysql> SELECT EXTRACT(HOUR_MINUTE FROM NOW());+---------------------------------+| EXTRACT(HOUR_MINUTE FROM NOW()) |+---------------------------------+| 2142 |+---------------------------------+1 row in set (0.00 sec)
24 TIME_TO_SEC(time)函數
TIME_TO_SEC(time)函數將time轉化為秒并返回結果值。轉化的公式為:小時*3600+分鐘*60+秒。使用示例如下:
mysql> SELECT TIME_TO_SEC(NOW());+--------------------+| TIME_TO_SEC(NOW()) |+--------------------+| 78774 |+--------------------+1 row in set (0.00 sec)
25 SEC_TO_TIME(seconds)函數
SEC_TO_TIME(seconds)函數將seconds描述轉化為包含小時、分鐘和秒的時間。使用示例如下:
mysql> SELECT SEC_TO_TIME(78774);+--------------------+| SEC_TO_TIME(78774) |+--------------------+| 21:52:54 |+--------------------+1 row in set (0.12 sec)
26 DATE_ADD(date,INTERVAL expr type)函數
DATE_ADD(date,INTERVAL expr type)函數返回與date相差INTERVAL時間間隔的日期,本質上是日期的加操作。該函數中的type是間隔的類型,間隔類型如表11-2所示。
表11-2 DATE_ADD(date,INTERVAL expr type)函數中type的取值
使用示例如下:
mysql> SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);+---------------------------------+| DATE_ADD(NOW(), INTERVAL 1 DAY) |+---------------------------------+| 2019-12-16 22:04:36 |+---------------------------------+1 row in set (0.00 sec)
ADDDATE(date,INTERVAL expr type)函數與DATE_ADD(date,INTERVAL expr type)函數的作用相同,不再贅述。
27 DATE_SUB(date,INTERVAL expr type)函數
DATE_SUB(date,INTERVAL expr type)函數返回與date相差INTERVAL時間間隔的日期,本質上是日期的減操作,其中type的取值見表11-2。使用示例如下:
mysql> SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);+---------------------------------+| DATE_SUB(NOW(), INTERVAL 1 DAY) |+---------------------------------+| 2019-12-14 22:09:10 |+---------------------------------+1 row in set (0.00 sec)
SUBDATE(date,INTERVAL expr type)函數與DATE_SUB(date,INTERVAL expr type)函數作用相同,不再贅述。
注意:DATE_ADD、ADDDATE、DATE_SUB和SUBDATE這4個函數均可以指定負值。
28 ADDTIME(time1,time2)函數
ADDTIME(time1,time2)函數返回time1加上time2的時間。其中,time2是一個表達式,也可以是一個數字,當time2為一個數字時,代表的是秒。使用示例如下:
mysql> SELECT ADDTIME(NOW(), 50);+---------------------+| ADDTIME(NOW(), 50) |+---------------------+| 2019-12-15 22:17:47 |+---------------------+1 row in set (0.00 sec)mysql> SELECT ADDTIME(NOW(), "1:1:1");+-------------------------+| ADDTIME(NOW(), "1:1:1") |+-------------------------+| 2019-12-15 23:18:46 |+-------------------------+1 row in set (0.00 sec)
ADDTIME(NOW(),'1:1:1')表示的含義為返回為當前時間加上1小時1分1秒之后的時間。
ADDTIME(time1,time2)函數中的time2的值也可以為負值。
mysql> SELECT ADDTIME(NOW(), "-1:-1:-1");+----------------------------+| ADDTIME(NOW(), "-1:-1:-1") |+----------------------------+| 2019-12-15 22:19:29 |+----------------------------+1 row in set, 1 warning (0.01 sec)
ADDTIME(NOW(),'-1:-1:-1')表示的含義為返回當前時間減去1小時1分1秒之后的時間。
29 SUBTIME(time1,time2)函數
SUBTIME(time1,time2)函數返回time1減去time2后的時間。其中,time2是一個表達式,也可以是一個數字,當time2為一個數字時,代表的是秒。使用示例如下:
mysql> SELECT SUBTIME(NOW(), 50); +---------------------+| SUBTIME(NOW(), 50) |+---------------------+| 2019-12-15 22:23:35 |+---------------------+1 row in set (0.00 sec)mysql> SELECT SUBTIME(NOW(), "1:1:1");+-------------------------+| SUBTIME(NOW(), "1:1:1") |+-------------------------+| 2019-12-15 21:23:50 |+-------------------------+1 row in set (0.00 sec)mysql> SELECT SUBTIME(NOW(), "-1:-1:-1"); +----------------------------+| SUBTIME(NOW(), "-1:-1:-1") |+----------------------------+| 2019-12-15 22:25:11|+----------------------------+1 row in set, 1 warning (0.00 sec)
30 DATEDIFF(date1,date2)函數
DATEDIFF(date1,date2)函數計算兩個日期之間相差的天數。使用示例如下:
mysql> SELECT DATEDIFF(NOW(), "1970-01-01");+-------------------------------+| DATEDIFF(NOW(), "1970-01-01") |+-------------------------------+| 18245 |+-------------------------------+1 row in set (0.00 sec)
31 FROM_DAYS(N)函數
FROM_DAYS(N)函數返回從0000年1月1日起,N天以后的日期。使用示例如下:
mysql> SELECT FROM_DAYS(366);+----------------+| FROM_DAYS(366) |+----------------+| 0001-01-01 |+----------------+1 row in set (0.00 sec)
32 LAST_DAY(date)函數
LAST_DAY(date)函數返回date所在月份的最后一天的日期。使用示例如下:
mysql> SELECT LAST_DAY(NOW());+-----------------+| LAST_DAY(NOW()) |+-----------------+| 2019-12-31 |+-----------------+1 row in set (0.00 sec)
33 MAKEDATE(year,n)函數
MAKEDATE(year,n)函數針對給定年份與所在年份中的天數返回一個日期。使用示例如下:
mysql> SELECT MAKEDATE(2020,1);+------------------+| MAKEDATE(2020,1) |+------------------+| 2020-01-01 |+------------------+1 row in set (0.00 sec)mysql> SELECT MAKEDATE(2020,32);+-------------------+| MAKEDATE(2020,32) |+-------------------+| 2020-02-01|+-------------------+1 row in set (0.00 sec)
34 MAKETIME(hour,minute,second)函數
將給定的小時、分鐘和秒組合成時間并返回。使用示例如下:
mysql> SELECT MAKETIME(1,1,1);+-----------------+| MAKETIME(1,1,1) |+-----------------+| 01:01:01|+-----------------+1 row in set (0.00 sec)
35 PERIOD_ADD(time,n)函數
PERIOD_ADD(time,n)函數返回time加上n后的時間。使用示例如下:
mysql> SELECT PERIOD_ADD(20200101010101,1);+------------------------------+| PERIOD_ADD(20200101010101,1) |+------------------------------+| 20200101010102 |+------------------------------+1 row in set (0.00 sec)
36 TO_DAYS(date)函數
TO_DAYS(date)函數返回日期date距離0000年1月1日的天數。使用示例如下:
mysql> SELECT TO_DAYS(NOW());+----------------+| TO_DAYS(NOW()) |+----------------+| 737773 |+----------------+1 row in set (0.00 sec)
37 DATE_FORMAT(date,format)函數
DATE_FORMAT(date,format)函數按照指定的格式format來格式化日期date。其中,format常用的格式符如表11-3所示。
表11-3 DATE_FORMAT(date,format)函數中format常用的格式符
使用示例如下:
mysql> SELECT DATE_FORMAT(NOW(), "%H:%i:%s");+--------------------------------+| DATE_FORMAT(NOW(), "%H:%i:%s") |+--------------------------------+| 22:57:34|+--------------------------------+1 row in set (0.00 sec)
38 TIME_FORMAT(time,format)函數
TIME_FORMAT(time,format)函數按照指定的格式format來格式化日期date。其中,format常用的格式符見表11-3。使用示例如下:
mysql> SELECT TIME_FORMAT(NOW(), "%H:%i:%s"); +--------------------------------+| TIME_FORMAT(NOW(), "%H:%i:%s") |+--------------------------------+| 22:59:40|+--------------------------------+1 row in set (0.00 sec)
39 GET_FORMAT(date_type,format_type)函數
GET_FORMAT(date_type,format_type)函數返回日期字符串的顯示格式,其中date_type表示日期類型,format_type表示格式化類型。日期類型與格式化類型的取值如表11-4所示。
表11-4 GET_FORMAT函數返回的格式化字符串
使用示例如下:
mysql> SELECT GET_FORMAT(DATE, "USA");+-------------------------+| GET_FORMAT(DATE, "USA") |+-------------------------+| %m.%d.%Y|+-------------------------+1 row in set (0.00 sec)
40 STR_TO_DATE(str,format)函數
STR_TO_DATE(str,format)函數將字符串str按照format格式轉化為日期或時間。其中,format的取值見表11-3。使用示例如下:
mysql> SELECT STR_TO_DATE("2020-01-01 00:00:00","%Y-%m-%d"); +-----------------------------------------------+| STR_TO_DATE("2020-01-01 00:00:00","%Y-%m-%d") |+-----------------------------------------------+| 2020-01-01 |+-----------------------------------------------+1 row in set, 1 warning (0.00 sec)
到此這篇關于Mysql中的日期時間函數小結的文章就介紹到這了,更多相關Mysql 日期時間函數內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!
相關文章:
