MySQL-日期时间格式化函数

日期时间等函数

一、日期时间函数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)

Acho que você gosta

Origin blog.csdn.net/qq_36434219/article/details/120606893
Recomendado
Clasificación