【MySQL】07.内置函数

发布于:2025-05-24 ⋅ 阅读:(16) ⋅ 点赞:(0)

1. 日期函数

• 获得年月日

mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2025-05-23     |
+----------------+
1 row in set (0.00 sec)

• 获得时分秒

mysql> select current_time();
+----------------+
| current_time() |
+----------------+
| 20:09:47       |
+----------------+
1 row in set (0.00 sec)

• 获得时间戳

mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2025-05-23 20:10:43 |
+---------------------+
1 row in set (0.00 sec)

• 在日期的基础上加上时间

mysql> select date_add(date(current_timestamp()),interval 20 day);
+-----------------------------------------------------+
| date_add(date(current_timestamp()),interval 20 day) |
+-----------------------------------------------------+
| 2025-06-12                                          |
+-----------------------------------------------------+
1 row in set (0.00 sec)

• 在日期的基础上减去时间

mysql> select date_sub(date(current_timestamp()),interval 20 day);
+-----------------------------------------------------+
| date_sub(date(current_timestamp()),interval 20 day) |
+-----------------------------------------------------+
| 2025-05-03                                          |
+-----------------------------------------------------+
1 row in set (0.00 sec)

 计算两个日期之间相差多少天

mysql> select datediff(date(current_timestamp()),'2020-4-26');
+-------------------------------------------------+
| datediff(date(current_timestamp()),'2020-4-26') |
+-------------------------------------------------+
|                                            1853 |
+-------------------------------------------------+
1 row in set (0.00 sec)

 当前时间

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2025-05-23 20:20:10 |
+---------------------+
1 row in set (0.00 sec)

 创建一个留言表的示例

mysql> create table msg( 
        id int primary key auto_increment, 
        content varchar(30) not null, 
        sendtime datetime 
       );
Query OK, 0 rows affected (0.03 sec)

mysql> insert into msg(content,sendtime) values('hello',now()),('world',now());
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> insert into msg(content,sendtime) values('send',now()),('you',now());
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from msg;
+----+---------+---------------------+
| id | content | sendtime            |
+----+---------+---------------------+
|  1 | hello   | 2025-05-23 20:26:45 |
|  2 | world   | 2025-05-23 20:26:45 |
|  3 | send    | 2025-05-23 20:27:17 |
|  4 | you     | 2025-05-23 20:27:17 |
+----+---------+---------------------+
4 rows in set (0.00 sec)

mysql> select * from msg where date_add(sendtime,interval 3 minute) > now();
+----+---------+---------------------+
| id | content | sendtime            |
+----+---------+---------------------+
|  3 | send    | 2025-05-23 20:27:17 |
|  4 | you     | 2025-05-23 20:27:17 |
+----+---------+---------------------+
2 rows in set (0.00 sec)

2. 字符串函数

 获取ms表的content列的字符集

mysql> select distinct charset(content) from msg;
+------------------+
| charset(content) |
+------------------+
| utf8mb4          |
+------------------+
1 row in set (0.00 sec)

 字符串拼接

mysql> select concat(id,'发送的文本内容是:',content,' ,发送的时间是:',sendtime)  文本内容 from msg;
+-----------------------------------------------------------------------------+
| 文本内容                                                                    |
+-----------------------------------------------------------------------------+
| 1发送的文本内容是:hello ,发送的时间是:2025-05-23 20:26:45                 |
| 2发送的文本内容是:world ,发送的时间是:2025-05-23 20:26:45                 |
| 3发送的文本内容是:send ,发送的时间是:2025-05-23 20:27:17                  |
| 4发送的文本内容是:you ,发送的时间是:2025-05-23 20:27:17                   |
+-----------------------------------------------------------------------------+
4 rows in set (0.00 sec)

 字串出现的位置

mysql> select instr('I am a happy day','hap');
+---------------------------------+
| instr('I am a happy day','hap') |
+---------------------------------+
|                               8 |
+---------------------------------+
1 row in set (0.00 sec)

 大小写转化

mysql> select ucase('I am a happy day');
+---------------------------+
| ucase('I am a happy day') |
+---------------------------+
| I AM A HAPPY DAY          |
+---------------------------+
1 row in set (0.00 sec)

mysql> select lcase('I AM A HAPPY DAY');
+---------------------------+
| lcase('I AM A HAPPY DAY') |
+---------------------------+
| i am a happy day          |
+---------------------------+
1 row in set (0.00 sec)

 截取子串

mysql> select left('I AM A HAPPY DAY',6);
+----------------------------+
| left('I AM A HAPPY DAY',6) |
+----------------------------+
| I AM A                     |
+----------------------------+
1 row in set (0.00 sec)

 计算字符串字节数

mysql> select length('I AM A HAPPY DAY');
+----------------------------+
| length('I AM A HAPPY DAY') |
+----------------------------+
|                         16 |
+----------------------------+
1 row in set (0.00 sec)

 字符串替换

mysql> select replace('I AM A HAPPY DAY','HAPPY','999990');
+----------------------------------------------+
| replace('I AM A HAPPY DAY','HAPPY','999990') |
+----------------------------------------------+
| I AM A 999990 DAY                            |
+----------------------------------------------+
1 row in set (0.00 sec)

 空格去除

mysql> select trim('    I AM A HAPPY DAY     ');
+-----------------------------------+
| trim('    I AM A HAPPY DAY     ') |
+-----------------------------------+
| I AM A HAPPY DAY                  |
+-----------------------------------+
1 row in set (0.00 sec)

3. 数学函数

  绝对值

mysql> select abs(-10.89);
+-------------+
| abs(-10.89) |
+-------------+
|       10.89 |
+-------------+
1 row in set (0.00 sec)

  进制转化

mysql> select bin(19);
+---------+
| bin(19) |
+---------+
| 10011   |
+---------+
1 row in set (0.00 sec)

mysql> select hex(19);
+---------+
| hex(19) |
+---------+
| 13      |
+---------+
1 row in set (0.00 sec)

mysql> select conv(19,10,8);
+---------------+
| conv(19,10,8) |
+---------------+
| 23            |
+---------------+
1 row in set (0.00 sec)

  取整

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

mysql> select floor(8.4);
+------------+
| floor(8.4) |
+------------+
|          8 |
+------------+
1 row in set (0.00 sec)

4. 其他函数

-- user() 查询当前用户
mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

-- md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
mysql> select md5('admin');
+----------------------------------+
| md5('admin')                     |
+----------------------------------+
| 21232f297a57a5a743894a0e4a801fc3 |
+----------------------------------+
1 row in set (0.00 sec)

-- database()显示当前正在使用的数据库
mysql> select database();
+------------+
| database() |
+------------+
| func       |
+------------+
1 row in set (0.00 sec)

-- password()函数,MySQL数据库使用该函数对用户加密
mysql> select password('root');
+-------------------------------------------+
| password('root')                         |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+

-- ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
mysql> select ifnull(null,'000');
+--------------------+
| ifnull(null,'000') |
+--------------------+
| 000                |
+--------------------+
1 row in set (0.00 sec)

mysql> select ifnull('hello','000');
+-----------------------+
| ifnull('hello','000') |
+-----------------------+
| hello                 |
+-----------------------+
1 row in set (0.00 sec)


网站公告

今日签到

点亮在社区的每一天
去签到