MySQL常用函数

mySQL常用函数

      • 数学函数
      • 字符串函数
      • 日期函数
      • 聚合函数
      • 系统信息函数

数学函数

(1) 绝对值函数 abs( a )
获取a的绝对值
(2) pi( ) 默认显示6位小数
显示六位小数的圆周率
(3) sqrt( a )平方分函数
获取a的平方根,a为非负数
(4) mod( a,b )取余函数
对a除b取余
(5) ceil( a ) 向上取整
对小数a向上取整
(6) floor( a )向下取整
对小数a向下取整
(7) rand( ) 随机数0-1之间
获取0-1之间的随机数
(8) round( ) 四舍五入 保留小数后面加 ,保留位数

SELECT ROUND(5.5051,2); //结果5.51

(9) truncate( ) 截取

SELECT TRUNCATE(5.5051,2); //结果5.50

(10) sign( ) 整数返回1 负数返回-1 0返回0
(11) pow(x,y) 幂运算x的y次方
(12) log(x) 对数函数
(13) radians( ) degrees( ) 角度与弧度相互转换的函数
(14) sin( ) ,asin( ) ,cos( ) , acos( ) 等三角函数

字符串函数

(1) concat(str1,str21str3…) 字符串拼接 与null拼接结果为null
concat_ws( ) 第一个参数是连接符 可以忽略null
(2) replace(str,a,b) 替换 把str中a替换成b
(3) upper( ), lower( ) 转大写,转小写
(4) left( a ), right( a )
前者返回字符串a,其左边所有空格被删除;后者返回字符串a,其右边所有空格被删除
(5) lpad(str,n,pad) 使用pad对字符串最左进行填充,直到n个字符长度 rpad( )同理
(6) trim( ) 去空格
(7) substr() 截取字符串
负数可以向前截取
(8) length( ) ,char_length( )
字符串长度,前者使用英文,后者适用中文
(9) find_in_set( ) 返回字符在字符串集合中的位置 find_in_set(‘a’,‘a,b,c,d,e’)
(10) instr(str,str1 ) 查找str1在str中的位置
(11) reverse(str) 将字符串str反转

日期函数

(1) now( ),curdate( ),sysdate( )
返回当前时间

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2020-09-02 15:08:56 |
+---------------------+
1 row in set (0.00 sec)

(2) date_format

select date_format(now(),'%y-%m-%d %h:%m:%s')
//time_format( )只对时分秒解析

在这里插入图片描述

//时间格式化
mysql> select date_format(now(),'%Y-%m-%d');
+-------------------------------+
| date_format(now(),'%Y-%m-%d') |
+-------------------------------+
| 2020-09-02                    |
+-------------------------------+
1 row in set (0.00 sec)

(3) str_to_date(‘20200814’,’%Y%m%d’ );

//字符串转时间
mysql> select str_to_date('2018-12-23', '%Y-%m-%d');
+---------------------------------------+
| str_to_date('2018-12-23', '%Y-%m-%d') |
+---------------------------------------+
| 2018-12-23                            |
+---------------------------------------+
1 row in set (0.00 sec)

//字符串转时间戳
mysql> select unix_timestamp('2020-02-22 22:22:22');
+---------------------------------------+
| unix_timestamp('2020-02-22 22:22:22') |
+---------------------------------------+
|                            1582381342 |
+---------------------------------------+
1 row in set (0.00 sec)

(4) unix-timestamp( ) 时间戳 返回一个格林尼治标准时间1970-01-01 00:00:00到现在的秒数
几个示范:

//获取当前时间戳:
mysql>  select unix_timestamp(now());
+-----------------------+
| unix_timestamp(now()) |
+-----------------------+
|            1599030443 |
+-----------------------+
1 row in set (0.00 sec)
//时间转换成时间戳:
mysql> select unix_timestamp('2020-07-26 00:00:00');
+---------------------------------------+
| unix_timestamp('2020-07-26 00:00:00') |
+---------------------------------------+
|                            1595692800 |
+---------------------------------------+
1 row in set (0.00 sec)
//时间戳转换成时间:
mysql> select from_unixtime(785606400);
+--------------------------+
| from_unixtime(785606400) |
+--------------------------+
| 1994-11-24 00:00:00      |
+--------------------------+
1 row in set (0.00 sec)
//时间戳转成时间同时格式化:
mysql> select from_unixtime(785606400,'%Y-%m-%d %H:%i:%S');
+----------------------------------------------+
| from_unixtime(785606400,'%Y-%m-%d %H:%i:%S') |
+----------------------------------------------+
| 1994-11-24 00:00:00                          |
+----------------------------------------------+
1 row in set (0.00 sec)

(5) date_add(now( ),interval 1 day); 为日期增加一个时间间隔

(6) datediff(date1,date2) 两个日期相减,返回天数 参数类型必须相同
timestamdiff(date1,date2) 日期按年相减

//考勤日期
SELECT s.worker_name ‘姓名’,DATE_FORMAT(s.sign_time,’%Y-%m-%d’) ‘考勤日期’, 
TIMESTAMPDIFF(SECOND,s.sign_time,
STR_TO_DATE(CONCAT(DATE_FORMAT(s.sign_time,’%Y-%m-%d ‘),w.sign_time),
’%Y-%m-%d %H:%i:%S’))/60 FROM sign_log s
JOIN work_plan w ON s.worker_name=w.worker_name

聚合函数

(1) count( ) 计数 NULL值不计数
(2) sum( ) 求和
(3) avg( ) 求平均数
(4) max( ) 取最大值
(5) min( ) 取最小值

系统信息函数

(1) version
查看mysql版本号
(2) connection_id( )
查看当前用户的连接数
(3) user( )
查看当前被MySQL服务器验证的用户名

你可能感兴趣的:(SQL)