hopeless-dream

导航

MySQL内置函数-单行函数(日期函数)

日期函数

获取当前日期,当前时间

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2020-06-09 23:21:10 |
+---------------------+
1 row in set (0.00 sec)

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2020-06-09 |
+------------+
1 row in set (0.00 sec)

mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 23:21:23  |
+-----------+
1 row in set (0.00 sec)

截取时间单位(年、月、日、时、分、秒)

mysql> select year(now());
+-------------+
| year(now()) |
+-------------+
|        2020 |
+-------------+
1 row in set (0.00 sec)

mysql> select month(now());
+--------------+
| month(now()) |
+--------------+
|            6 |
+--------------+
1 row in set (0.00 sec)

mysql> select day(now());
+------------+
| day(now()) |
+------------+
|          9 |
+------------+
1 row in set (0.00 sec)

mysql> select hour(now());
+-------------+
| hour(now()) |
+-------------+
|          23 |
+-------------+
1 row in set (0.00 sec)

mysql> select minute(now());
+---------------+
| minute(now()) |
+---------------+
|            24 |
+---------------+
1 row in set (0.00 sec)

mysql> select second(now());
+---------------+
| second(now()) |
+---------------+
|            32 |
+---------------+
1 row in set (0.00 sec)

案例:
mysql> select (year(now())-year('1998-01-01 00:01:01')); +-------------------------------------------+ | (year(now())-year('1998-01-01 00:01:01')) | +-------------------------------------------+ | 22 | +-------------------------------------------+ 1 row in set (0.00 sec) mysql> select (year('1998-01-01 00:01:01')); +-------------------------------+ | (year('1998-01-01 00:01:01')) | +-------------------------------+ | 1998 | +-------------------------------+ 1 row in set (0.00 sec)

获取当前时间戳函数 

mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2020-06-11 11:37:28 |
+---------------------+
1 row in set (0.00 sec)

mysql> select current_timestamp;
+---------------------+
| current_timestamp   |
+---------------------+
| 2020-06-11 11:37:47 |
+---------------------+
1 row in set (0.00 sec)

 

将字符串转换成日期

mysql> select str_to_date();

mysql> select str_to_date('1-1 2020','%m-%d %y');
+------------------------------------+
| str_to_date('1-1 2020','%m-%d %y') |
+------------------------------------+
| 2020-01-01                         |
+------------------------------------+
1 row in set, 1 warning (0.00 sec)

将时间、日期转换为字符串

date_format(date,format), time_format(time,format)

mysql> select date_format('2020-06-11 11:37:47','%d-%m-%y %H:%i:%S');
+--------------------------------------------------------+
| date_format('2020-06-11 11:37:47','%d-%m-%y %H:%i:%S') |
+--------------------------------------------------------+
| 11-06-20 11:37:47                                      |
+--------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select time_format('2020-06-11 11:37:47','%d-%m-%y %H:%i:%S');
+--------------------------------------------------------+
| time_format('2020-06-11 11:37:47','%d-%m-%y %H:%i:%S') |
+--------------------------------------------------------+
| 00-00-00 11:37:47                                      |
+--------------------------------------------------------+
1 row in set (0.00 sec)

转换天数、日期

to_days是从0年开始算的

mysql> select to_days('1970-01-01');
+-----------------------+
| to_days('1970-01-01') |
+-----------------------+
|                719528 |
+-----------------------+
1 row in set (0.00 sec)

mysql> select to_days('0001-01-01');
+-----------------------+
| to_days('0001-01-01') |
+-----------------------+
|                   366 |
+-----------------------+
1 row in set (0.00 sec)

from_days是给出天数推算是从0年开始的哪个日期

mysql> select from_days(365);
+----------------+
| from_days(365) |
+----------------+
| 0000-00-00     |
+----------------+
1 row in set (0.00 sec)

mysql> select from_days(366);
+----------------+
| from_days(366) |
+----------------+
| 0001-01-01     |
+----------------+
1 row in set (0.00 sec)

mysql> select from_days(367);
+----------------+
| from_days(367) |
+----------------+
| 0001-01-02     |
+----------------+
1 row in set (0.00 sec)

返回unix时间戳 unix_timestamp

mysql> select unix_timestamp('1970-01-01');
+------------------------------+
| unix_timestamp('1970-01-01') |
+------------------------------+
|                        18000 |
+------------------------------+
1 row in set (0.00 sec)

mysql> select unix_timestamp('1970-01-01 00:00:01');
+---------------------------------------+
| unix_timestamp('1970-01-01 00:00:01') |
+---------------------------------------+
|                                 18001 |
+---------------------------------------+
1 row in set (0.00 sec)

from_unixtime 从给定时间戳计算年月日

mysql> select from_unixtime(1);
+---------------------+
| from_unixtime(1)    |
+---------------------+
| 1969-12-31 19:00:01 |
+---------------------+
1 row in set (0.00 sec)

 

日期格式符

格式符 作用
%Y 4位年份,例如:1998
%y 2位年份,例如:98
%m 月份,例如: 0102,...,12
%c 月份,例如: 12,...,12
%d 日期,例如0102,..,31
%H 24小时制
%h 12小时制
%i 分钟,例如:00-59
%s ,例如:00-59

以指定的字符串格式显示日期 date_format

mysql> select date_format(now(),'%Y-%m-%d');
+-------------------------------+
| date_format(now(),'%Y-%m-%d') |
+-------------------------------+
| 2020-06-09                    |
+-------------------------------+
1 row in set (0.00 sec)

 time_format函数转换时间

mysql> select time_format('1996-04-20 11:07:45','%h %i %s');
+-----------------------------------------------+
| time_format('1996-04-20 11:07:45','%h %i %s') |
+-----------------------------------------------+
| 11 07 45                                      |
+-----------------------------------------------+
1 row in set (0.00 sec)

 时区转换函数convert_tz

convert_tz(dt,from_tz,to_tz)
mysql> select convert_tz('2008-08-08 12:00:00', '+09:00', '+01:00');
+-------------------------------------------------------+
| convert_tz('2008-08-08 12:00:00', '+09:00', '+01:00') |
+-------------------------------------------------------+
| 2008-08-08 04:00:00                                   |
+-------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select convert_tz('2008-08-08 12:00:00', '+09:00', '+0:10');
+------------------------------------------------------+
| convert_tz('2008-08-08 12:00:00', '+09:00', '+0:10') |
+------------------------------------------------------+
| 2008-08-08 03:10:00                                  |
+------------------------------------------------------+
1 row in set (0.00 sec)

 

posted on 2020-06-10 11:39  hopeless-dream  阅读(280)  评论(0编辑  收藏  举报