文章目录
- 一、日期函数
- 二、字符串函数
- 三、数学函数
- 四、其他函数
一、日期函数
函数名称 | 功能描述 |
---|---|
current_data() | 获取当前日期 |
current_time() | 获取当前时间 |
current_timestamp() | 获取当前时间戳 |
date() | 返回datetime的日期部分 |
date_add(date, interval d_value_type) | 以date为基础,添加日期或者时间,interval 后面指定时间的类型,例如year、month、day等等 |
date_sub(date, interval d_value_type) | 以date为基础,减去日期或者时间,interval 后面指定时间的类型,例如year、month、day等等 |
datediff(date1, date2) | 两个日期的差,单位是天数 |
now() | 获取当前日期时间 |
获取当前年月日
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2023-05-07 |
+----------------+
1 row in set (0.00 sec)
获取当前时分秒
mysql> select current_time();
+----------------+
| current_time() |
+----------------+
| 20:11:07 |
+----------------+
1 row in set (0.00 sec)
获取当前时间戳
mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2023-05-07 20:12:27 |
+---------------------+
1 row in set (0.00 sec)
获取当前时间戳的日期部分
mysql> select date(current_timestamp());
+---------------------------+
| date(current_timestamp()) |
+---------------------------+
| 2023-05-07 |
+---------------------------+
1 row in set (0.00 sec)
在日期的基础上加天数
mysql> select date_add(current_date, interval 10 day);
+-----------------------------------------+
| date_add(current_date, interval 10 day) |
+-----------------------------------------+
| 2023-05-17 |
+-----------------------------------------+
1 row in set (0.00 sec)
在日期的基础上减去天数
mysql> select date_sub(current_date, interval 10 day);
+-----------------------------------------+
| date_sub(current_date, interval 10 day) |
+-----------------------------------------+
| 2023-04-27 |
+-----------------------------------------+
1 row in set (0.00 sec)
计算两个日期之间相差多少天
mysql> select datediff('2023-5-7', '2023-1-1');
+----------------------------------+
| datediff('2023-5-7', '2023-1-1') |
+----------------------------------+
| 126 |
+----------------------------------+
1 row in set (0.00 sec)
二、字符串函数
函数名称 | 功能描述 |
---|---|
charset(str) | 返回字符串对应的字符集 |
concat(string2, […, …]) | 连接字符串 |
instr(string, substring) | 返回substring在string中出现的位置,没有则返回0 |
ucase(str) | 转化为大写 |
lcase(str) | 转化为小写 |
left(str, length) | 从str左边起取length个字符 |
right(str, length) | 从str右边起取length个字符 |
length(str) | 获取str的长度 |
replace(str, search_str, replace_str) | 在str中,用replace_str替换search_str |
substring(str, position, [length]) | 从str的position位置开始,截取length长度的字符串 |
strcmp(str1, str2) | 逐字符比较两字符串大小,相对返回0,前者大返回1,否则返回-1 |
ltrim(str)、rtrim(str)、trim(str) | 去除字符串前后的空格 |
charset函数
由此可见,数字在数据库中是以二进制的形式存储的。
concat函数
instr函数
说明在MySQL中,字符的第一个位置的下标是1,而不是0。
ucase函数和lcase函数
left函数
right函数
length函数
注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)。
replace函数
substring函数
strcmp函数
ltrim、rtrim、trim函数
三、数学函数
函数名称 | 功能描述 |
---|---|
abs(number) | 绝对值函数 |
ceiling(number) | 向上取整 |
floor(number) | 向下取整 |
bin(decimal_num) | 十进制转二进制 |
hex(decimal_num) | 十进制转十六进制 |
conv(number, from_base, to_base) | 进制转换 |
format(number, decimal_places) | 格式化,保留小数位数 |
rand() | 返回随机浮点数,范围[0.0, 1.0) |
mod(number, denominator) | 取模求余 |
取绝对值
向上取整
向下取整
保留两位小数(小数四舍五入)
产生随机数
四、其他函数
- user()函数用于查询当前用户
- md5(str)函数用于对一个字符串进行md5摘要,摘要后得到一个32位字符串
值得一提的是:
- 一般情况下公司内部数据库不会存储用户的明文密码,而会将用户密码形成摘要后存储对应的摘要,当用户登录账号时,将用户输入的的密码形成摘要后与数据库中存储的摘要做对比,如果对比成功则允许登录。
- 这么做的好处主要有两个,第一个好处就是公司内部数据库中存储的不是用户的明文信息,就算用户信息泄露了也不会产生太大影响,第二个好处就是形成的摘要是定长的,这样有利于数据库表结构的设计。
- database()显示当前正在使用的数据库
- password()函数,MySQL数据库使用该函数对用户加密
password函数和md5函数类似,只是password函数专门用于对MySQL用户的登录密码进行加密的。另外,我有一个有趣的发现,那就是MySQL不会对出现password或者md5的SQL语句做历史记录,因此在命令行模式按上下键找不到刚才执行过的SQL语句,一定程度上也保护了明文密码的安全。
- ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
ifnull函数其实就相当于C/C++中的三目运算符。