函数名称 | 描述 |
---|---|
current_date() | 当前的日期 |
current_time() | 当前的时间 |
current_timestamp() | 当前时间戳,日期加时间 |
date(datetime) | 返回时间戳的日期部分 |
time(datetime) | 返回时间戳的时间部分 |
date_add(date,interval d_value_type) | 返回date加某个时间,后面参数的单位可以是year,day,minute,second |
date_sub(date,interval d_value_type) | 返回date减某个时间,后面参数的单位可以是year,day,minute,second |
datediff(date1,date2) | 返回两个日期的时间差,单位是天 |
now() | 返回当前日期和时间,和timestamp一样 |
可以配合select使用,比如:
假设一个表有一个日期列,插入时该列的值都是now(),筛选出2分钟以内插入的信息:
select * from 表名 where date_add(表的时间列,interval 2 minute) >= now();
函数名称 | 描述 |
---|---|
charset(str) | 返回字符串字符集 |
concat(string1[, …]) | 返回一个拼接的字符串 |
instr(string,substring) | 返回substring在string中首次出现的位置,以1作为起始位置,没有就返回0 |
ucase(string) | 把目标串全部转换成大写 |
lcase(string) | 把目标串全部转换成小写 |
left(string,length) | 从string2的左边起取length个字符 |
length(string) | 返回string的字节长度 |
replace(str,search_str,replace_str) | 在str中用relpace_str替换search_str |
strcmp(string1,string2) | 逐字符比较两个字符串的大小,忽略大小写,前者大返回1,后者大返回-1,相等返回0 |
substring(str,position[, length]) | 从str的position位置开始,以1作为起始位置,取length个字符 |
ltrim(string) rtrim(string) rtim(string) | 去除左侧空格或右侧空格或两边空格 |
获取某一列的字符集
select charset(列名) from 表名;
计算某一列占用的字节数
select length(列名) from 表名;
注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数组算作一个字节,中文表示多个字节数(与字符集编码有关)
从头开始截取一个字符串
select substring('123456',1);
注意,这里的position和C语言的不一样,这里是从1开始的
把字符串的第一个字符转换成大写
select concat(ucase(substring('目标字符串',1,1)),substring('目标字符串',2));
mysql> select concat(ucase(substring('string',1,1)),substring('string',2)) as '转换结果';
+--------------+
| 转换结果 |
+--------------+
| String |
+--------------+
1 row in set (0.00 sec)
函数名称 | 描述 |
---|---|
abs(number) | 返回绝对值 |
bin(decimal_number) | 十进制换二进制 |
hex(decimalNumber) | 十进制换十六进制 |
conv(number,from_base,to_base) | 把number从from进制转换成to进制 |
ceiling(number) | 向上去整 |
floor(number) | 向下去整 |
format(number,decimal_places) | number要保留的小数位数,四舍五入 |
rand() | 返回随机浮点数,范围是[0.0,1.0) |
mod(number,denominator) | 取模,求余 |
向上取整,无论正负,都向大的方向取整:
mysql> select ceiling(10.1);
+---------------+
| ceiling(10.1) |
+---------------+
| 11 |
+---------------+
1 row in set (0.00 sec)
向下取整,无论正负,都向小的方向取整
mysql> select floor(10.9);
+-------------+
| floor(10.9) |
+-------------+
| 10 |
+-------------+
1 row in set (0.00 sec)
user():查询当前用户
mysql> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
md5(str):对一个字符串进行md5摘要,摘要后得到一个32位定长的不重复的字符串。
mysql> select md5('str');
+----------------------------------+
| md5('str') |
+----------------------------------+
| 341be97d9aff90c9978347f66f945b77 |
+----------------------------------+
1 row in set (0.00 sec)
可以用来保存用户密码,其原理是通过哈希算法实现的。
database():查看当前正在使用的数据库
mysql> select database();
+------------+
| database() |
+------------+
| for_test |
+------------+
1 row in set (0.00 sec)
password(),可以使用该函数对用户密码加密
mysql> select password('root');
+-------------------------------------------+
| password('root') |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+
1 row in set (0.00 sec)
ifnull(val1,val2):如果val1值为null,返回val2,否则返回val1,有点像三目运算符 val1 != null ? val1 : val2;