日期时间等函数
- 一、日期时间函数date、time、hour、minute、second
-
- 二、时间间隔,增加减少函数date_add()、date_sub() 年月日时分秒 周 季度
-
- 三、日期格式函数
-
- 秒 %S、%s 两位数字形式的秒( 00,01, ..., 59)
- 分 %i 两位数字形式的分( 00,01, ..., 59)
- 小时 %H 24小时制,两位数形式小时(00,01, ...,23)
- %h 12小时制,两位数形式小时(00,01, ...,12)
- I 同h ?
- %k 24小时制,数形式小时(0,1, ...,23)
- %l 12小时制,数形式小时(0,1, ...,12)
- %T 24小时制,时间形式(HH:mm:ss)
- %r 12小时制,时间形式(hh:mm:ss AM 或 PM)
- %p AM上午或PM下午
- 周 %W 一周中每一天的名称(Sunday,Monday, ...,Saturday)
- %a 一周中每一天名称的缩写(Sun,Mon, ...,Sat)
- %w 以数字形式标识周(0=Sunday,1=Monday, ...,6=Saturday)
- %U 数字表示周数
- %u 数字表示周数
- 天 %d 两位数字表示月中天数(01,02, ...,31)
- %e 数字表示月中天数(1,2, ...,31)
- %D 英文后缀表示月中天数(1st,2nd,3rd ...)
- %j 以三位数字表示年中天数(001,002, ...,366)
- 月 %M 英文月名(January,February, ...,December)
- %b 英文缩写月名(Jan,Feb, ...,Dec)
- %m 两位数字表示月份(01,02, ...,12)
- %c 数字表示月份(1,2, ...,12)
- 年 %Y 四位数字表示的年份(2015,2016...)
- %y 两位数字表示的年份(15,16...)
一、日期时间函数date、time、hour、minute、second
mysql> select * from test_date;
+----+------+---------------------+
| id | name | create_time |
+----+------+---------------------+
| 1 | tom1 | 2021-10-04 18:47:01 |
| 2 | tom2 | 2020-10-04 15:48:12 |
| 3 | tom3 | 2020-10-04 18:37:33 |
| 4 | tom4 | 2020-09-10 18:49:33 |
+----+------+---------------------+
4 rows in set (0.00 sec)
时间
mysql> select * from test_date where time(create_time)='15:48:12';
+----+------+---------------------+
| id | name | create_time |
+----+------+---------------------+
| 2 | tom2 | 2020-10-04 15:48:12 |
+----+------+---------------------+
1 row in set (0.00 sec)
时
mysql> select * from test_date where hour(create_time)='15';
+----+------+---------------------+
| id | name | create_time |
+----+------+---------------------+
| 2 | tom2 | 2020-10-04 15:48:12 |
+----+------+---------------------+
1 row in set (0.00 sec)
分
mysql> select * from test_date where minute(create_time)=48;
+----+------+---------------------+
| id | name | create_time |
+----+------+---------------------+
| 2 | tom2 | 2020-10-04 15:48:12 |
+----+------+---------------------+
1 row in set (0.00 sec)
秒
mysql> select * from test_date where second(create_time) between 10 and 15;
+----+------+---------------------+
| id | name | create_time |
+----+------+---------------------+
| 2 | tom2 | 2020-10-04 15:48:12 |
+----+------+---------------------+
1 row in set (0.00 sec)
-- between and 和 >= <
mysql> select * from test_date where second(create_time) >= 1 and second(create_time)<=30;
+----+------+---------------------+
| 1 | tom1 | 2021-10-04 18:47:01 |
| 2 | tom2 | 2020-10-04 15:48:12 |
+----+------+---------------------+
2 rows in set (0.00 sec)
日期
mysql> select * from test_date where date(create_time)='2020-10-04';
+----+------+---------------------+
| id | name | create_time |
+----+------+---------------------+
| 2 | tom2 | 2020-10-04 15:48:12 |
| 3 | tom3 | 2020-10-04 18:37:33 |
+----+------+---------------------+
2 rows in set (0.00 sec)
mysql> select * from test_date where date(create_time) between '2020-09-04' and '2021-10-04';
+----+------+---------------------+
| id | name | create_time |
+----+------+---------------------+
| 1 | tom1 | 2021-10-04 18:47:01 |
| 2 | tom2 | 2020-10-04 15:48:12 |
| 3 | tom3 | 2020-10-04 18:37:33 |
| 4 | tom4 | 2020-09-10 18:49:33 |
+----+------+---------------------+
4 rows in set (0.00 sec)
不加date函数效果
mysql> select * from test_date where create_time between '2020-09-04' and '2021-10-04';
+----+------+---------------------+
| id | name | create_time |
+----+------+---------------------+
| 2 | tom2 | 2020-10-04 15:48:12 |
| 3 | tom3 | 2020-10-04 18:37:33 |
| 4 | tom4 | 2020-09-10 18:49:33 |
+----+------+---------------------+
3 rows in set (0.00 sec)
mysql> select * from test_date where time(create_time) between '15:48:12' and '19:46:08';
+----+------+---------------------+
| id | name | create_time |
+----+------+---------------------+
| 1 | tom1 | 2021-10-04 18:47:01 |
| 2 | tom2 | 2020-10-04 15:48:12 |
| 3 | tom3 | 2020-10-04 18:37:33 |
| 4 | tom4 | 2020-09-10 18:49:33 |
+----+------+---------------------+
4 rows in set (0.00 sec)
二、时间间隔,增加减少函数date_add()、date_sub() 年月日时分秒 周 季度
年
mysql> select create_time,date_add(create_time, interval 1 year) from test_date where time(create_time)='15:48:12';
+---------------------+----------------------------------------+
| create_time | date_add(create_time, interval 1 year) |
+---------------------+----------------------------------------+
| 2020-10-04 15:48:12 | 2021-10-04 15:48:12 |
+---------------------+----------------------------------------+
1 row in set (0.00 sec)
月
mysql> select create_time,date_add(create_time, interval 1 month) from test_date wheere time(create_time)='15:48:12' ;
+---------------------+-----------------------------------------+
| create_time | date_add(create_time, interval 1 month) |
+---------------------+-----------------------------------------+
| 2020-10-04 15:48:12 | 2020-11-04 15:48:12 |
+---------------------+-----------------------------------------+
1 row in set (0.00 sec)
日
mysql> select create_time,date_add(create_time, interval 1 day) from test_date wheere time(create_time)='15:48:12';
+---------------------+---------------------------------------+
| create_time | date_add(create_time, interval 1 day) |
+---------------------+---------------------------------------+
| 2020-10-04 15:48:12 | 2020-10-05 15:48:12 |
+---------------------+---------------------------------------+
1 row in set (0.00 sec)
时
mysql> select create_time,date_add(create_time, interval 1 hour) from test_date wheere time(create_time)='15:48:12';
+---------------------+----------------------------------------+
| create_time | date_add(create_time, interval 1 hour) |
+---------------------+----------------------------------------+
| 2020-10-04 15:48:12 | 2020-10-04 16:48:12 |
+---------------------+----------------------------------------+
1 row in set (0.00 sec)
分
mysql> select create_time,date_add(create_time, interval 1 minute) from test_date whhere time(create_time)='15:48:12';
+---------------------+------------------------------------------+
| create_time | date_add(create_time, interval 1 minute) |
+---------------------+------------------------------------------+
| 2020-10-04 15:48:12 | 2020-10-04 15:49:12 |
+---------------------+------------------------------------------+
1 row in set (0.00 sec)
秒
mysql> select create_time,date_add(create_time, interval 1 second) from test_date wheere time(create_time)='15:48:12';
+---------------------+------------------------------------------+
| create_time | date_add(create_time, interval 1 second) |
+---------------------+------------------------------------------+
| 2020-10-04 15:48:12 | 2020-10-04 15:48:13 |
+---------------------+------------------------------------------+
1 row in set (0.00 sec)
毫秒
mysql> select create_time,date_add(create_time, interval 1 microsecond) from test_date where time(create_time)='15:48:12';
+---------------------+-----------------------------------------------+
| create_time | date_add(create_time, interval 1 microsecond) |
+---------------------+-----------------------------------------------+
| 2020-10-04 15:48:12 | 2020-10-04 15:48:12.000001 |
+---------------------+-----------------------------------------------+
1 row in set (0.00 sec)
周
mysql> select create_time,date_add(create_time, interval 1 week) from test_date whhere time(create_time)='15:48:12';
+---------------------+----------------------------------------+
| create_time | date_add(create_time, interval 1 week) |
+---------------------+----------------------------------------+
| 2020-10-04 15:48:12 | 2020-10-11 15:48:12 |
+---------------------+----------------------------------------+
1 row in set (0.00 sec)
季度 2020-10-04 15:48:12 + 3个月
mysql> select create_time,date_add(create_time, interval 1 quarter) from test_date wheere time(create_time)='15:48:12';
+---------------------+-------------------------------------------+
| create_time | date_add(create_time, interval 1 quarter) |
+---------------------+-------------------------------------------+
| 2020-10-04 15:48:12 | 2021-01-04 15:48:12 |
+---------------------+-------------------------------------------+
1 row in set (0.00 sec)
date_sub 同add用法
mysql> select create_time,date_sub(create_time, interval '1 1:1:1' day_second) from testt_date where time(create_time)='15:48:12';
+---------------------+------------------------------------------------------+
| create_time | date_sub(create_time, interval '1 1:1:1' day_second) |
+---------------------+------------------------------------------------------+
| 2020-10-04 15:48:12 | 2020-10-03 14:47:11 |
+---------------------+------------------------------------------------------+
1 row in set (0.00 sec)
三、日期格式函数
-- 以2020-10-04 15:48:12 周日为例
mysql> select create_time from test_date where time(create_time)='15:48:12';
+---------------------+
| create_time |
+---------------------+
| 2020-10-04 15:48:12 |
+---------------------+
1 row in set (0.00 sec)
秒 %S、%s 两位数字形式的秒( 00,01, …, 59)
mysql> select create_time,date_format(create_time, '%s') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%s') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 12 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
mysql> select create_time,date_format(create_time, '%S') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%S') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 12 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
分 %i 两位数字形式的分( 00,01, …, 59)
mysql> select create_time,date_format(create_time, '%i') from test_date where time(creatte_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%i') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 48 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
小时 %H 24小时制,两位数形式小时(00,01, …,23)
mysql> select create_time,date_format(create_time, '%H') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%H') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 15 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%h 12小时制,两位数形式小时(00,01, …,12)
mysql> select create_time,date_format(create_time, '%h') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%h') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 03 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
I 同h ?
mysql> select create_time,date_format(create_time, '%I') from test_date where time(creatte_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%I') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 03 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%k 24小时制,数形式小时(0,1, …,23)
mysql> select create_time,date_format(create_time, '%k') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%k') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 15 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%l 12小时制,数形式小时(0,1, …,12)
mysql> select create_time,date_format(create_time, '%l') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%l') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 3 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%T 24小时制,时间形式(HH:mm:ss)
mysql> select create_time,date_format(create_time, '%T') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%T') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 15:48:12 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%r 12小时制,时间形式(hh:mm:ss AM 或 PM)
mysql> select create_time,date_format(create_time, '%r') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%r') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 03:48:12 PM |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
mysql> select date_format('2020-10-04 10:48:12','%p');
+-----------------------------------------+
| date_format('2020-10-04 10:48:12','%p') |
+-----------------------------------------+
| AM |
+-----------------------------------------+
1 row in set (0.00 sec)
%p AM上午或PM下午
mysql> select create_time,date_format(create_time, '%p') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%p') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | PM |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
周 %W 一周中每一天的名称(Sunday,Monday, …,Saturday)
mysql> select create_time,date_format(create_time, '%W') from test_date where time(creatte_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%W') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | Sunday |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%a 一周中每一天名称的缩写(Sun,Mon, …,Sat)
mysql> select create_time,date_format(create_time, '%a') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%a') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | Sun |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%w 以数字形式标识周(0=Sunday,1=Monday, …,6=Saturday)
mysql> select create_time,date_format(create_time, '%w') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%w') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 0 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%U 数字表示周数
mysql> select create_time,date_format(create_time, '%U') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%U') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 40 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%u 数字表示周数
mysql> select create_time,date_format(create_time, '%u') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%u') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 40 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
天 %d 两位数字表示月中天数(01,02, …,31)
mysql> select create_time,date_format(create_time, '%d') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%d') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 04 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%e 数字表示月中天数(1,2, …,31)
mysql> select create_time,date_format(create_time, '%e') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%e') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 4 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%D 英文后缀表示月中天数(1st,2nd,3rd …)
mysql> select create_time,date_format(create_time, '%D') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%D') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 4th |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%j 以三位数字表示年中天数(001,002, …,366)
mysql> select create_time,date_format(create_time, '%j') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%j') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 278 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
月 %M 英文月名(January,February, …,December)
mysql> select create_time,date_format(create_time, '%M') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%M') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | October |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%b 英文缩写月名(Jan,Feb, …,Dec)
mysql> select create_time,date_format(create_time, '%b') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%b') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | Oct |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%m 两位数字表示月份(01,02, …,12)
mysql> select create_time,date_format(create_time, '%m') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%m') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 10 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%c 数字表示月份(1,2, …,12)
mysql> select date_format(' 2020-08-04 15:48:12', '%c') ;
+-------------------------------------------+
| date_format(' 2020-08-04 15:48:12', '%c') |
+-------------------------------------------+
| 8 |
+-------------------------------------------+
1 row in set (0.00 sec)
年 %Y 四位数字表示的年份(2015,2016…)
mysql> select create_time,date_format(create_time, '%Y') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%Y') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 2020 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
%y 两位数字表示的年份(15,16…)
mysql> select create_time,date_format(create_time, '%y') from test_date where time(create_time)='15:48:12';
+---------------------+--------------------------------+
| create_time | date_format(create_time, '%y') |
+---------------------+--------------------------------+
| 2020-10-04 15:48:12 | 20 |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
mysql> select date_format('2021-10-04 10:10:10', '%y') ;
+------------------------------------------+
| date_format('2021-10-04 10:10:10', '%y') |
+------------------------------------------+
| 21 |
+------------------------------------------+
1 row in set (0.00 sec)