码迷,mamicode.com
首页 > 数据库 > 详细

Mysql常用函数总结(二)

时间:2017-09-23 20:09:02      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:cto   sql   mit   格式   ifnull   --   需要   oct   提高   

  有的时候们需要了解当前的时间,这时候我们就可以调用时间函数了。下面就是一些常用的时间函数
技术分享
下面来说一下DATE_FORMAT(date,format):format可以有以下格式符:举个例子吧!

mysql> SELECT DATE_FORMAT(2017-10-04 22:23:00, %W %M %Y);
+------------------------------------------------+
| DATE_FORMAT(2017-10-04 22:23:00, %W %M %Y) |
+------------------------------------------------+
| Sunday October 2009                            |
+------------------------------------------------+
row in set (0.00 sec)

mysql> SELECT DATE_FORMAT(now(),%H %k %I %r %T %S %w);
+-------------------------------------------+
| DATE_FORMAT(now(),%H %k %I %r %T %S %w) |
+-------------------------------------------+
| 23 23 11 11:49:57 PM 23:49:57 57 5        |
+-------------------------------------------+
row in set (0.00 sec)

再来看一下DATE_ADD(date,INTERVAL expr unit):其中INTERVAL是关键字,expr是一个表达式,unit为间隔类型,MySQL提供如下的间隔类型:

mysql> SELECT DATE_ADD(2000-12-31 23:59:59,INTERVAL 1 SECOND);
+---------------------------------------------------+
| DATE_ADD(2000-12-31 23:59:59,INTERVAL 1 SECOND) |
+---------------------------------------------------+
| 2001-01-01 00:00:00                               |
+---------------------------------------------------+
row in set (0.00 sec)

mysql> SELECT DATE_ADD(2100-12-31 23:59:59,INTERVAL 1:1 MINUTE_SECOND);
+--------------------------------------------------------------+
| DATE_ADD(2100-12-31 23:59:59,INTERVAL 1:1 MINUTE_SECOND) |
+--------------------------------------------------------------+
| 2101-01-01 00:01:00                                          |
+--------------------------------------------------------------+
row in set (0.00 sec)

流程函数也是很常用的一类函数,用户可以使用这类函数在一个SQL语句中实现条件选择,这样做能够提高语句的效率。

技术分享

 举例:

现在有员工工资表如下:

mysql> select * from salary;
+----+---------+
| id | salary  |
+----+---------+
|  1 | 1000.00 |
|  2 | 2000.00 |
|  3 | 3000.00 |
|  4 | 4000.00 |
|  5 | 5000.00 |
|  6 | 6000.00 |
|  7 | 7000.00 |
|  8 |    NULL |
+----+---------+
rows in set (0.00 sec)

(1)当工资高于5000就显示高工资,低于5000的就显示低工资:

mysql> select id,if(salary>5000,高工资,低工资) as level from salary;
+----+-----------+
| id | level     |
+----+-----------+
|  1 | 低工资    |
|  2 | 低工资    |
|  3 | 低工资    |
|  4 | 低工资    |
|  5 | 低工资    |
|  6 | 高工资    |
|  7 | 高工资    |
|  8 | 低工资    |
+----+-----------+
rows in set (0.00 sec)

(2)当没有工资的时候,用0代替:

mysql> select ifnull(salary,0) from salary;
+------------------+
| ifnull(salary,0) |
+------------------+
|          1000.00 |
|          2000.00 |
|          3000.00 |
|          4000.00 |
|          5000.00 |
|          6000.00 |
|          7000.00 |
|             0.00 |
+------------------+
rows in set (0.00 sec)

(3)用case when来实现例子:

mysql> select id,case when salary>5000 then 高工资 else 低工资 end from salary;
+----+-------------------------------------------------------------+
| id | case when salary>5000 then 高工资 else 低工资 end       |
+----+-------------------------------------------------------------+
|  1 | 低工资                                                      |
|  2 | 低工资                                                      |
|  3 | 低工资                                                      |
|  4 | 低工资                                                      |
|  5 | 低工资                                                      |
|  6 | 高工资                                                      |
|  7 | 高工资                                                      |
|  8 | 低工资                                                      |
+----+-------------------------------------------------------------+
rows in set (0.00 sec)

(4)当工资是1000的为特低工资,工资为2000的为低工资,其余为高工资:

mysql> select id,case salary when 1000 then 特低工资 when 2000 then 低工资 else 高工资 end from salary;
+----+-------------------------------------------------------------------------------------------+
| id | case salary when 1000 then 特低工资 when 2000 then 低工资 else 高工资 end           |
+----+-------------------------------------------------------------------------------------------+
|  1 | 特低工资                                                                                  |
|  2 | 低工资                                                                                    |
|  3 | 高工资                                                                                    |
|  4 | 高工资                                                                                    |
|  5 | 高工资                                                                                    |
|  6 | 高工资                                                                                    |
|  7 | 高工资                                                                                    |
|  8 | 高工资                                                                                    |
+----+-------------------------------------------------------------------------------------------+
rows in set (0.00 sec)

其他函数

技术分享

 MySQL内置的函数还有很多,这里就不一一介绍了,具体的可以参考官方的文档,里面也有举了很多。

下面再来谈下平时可能用的比较少的自定义函数,自定义函数语法如下:

CREATE FUNCTION func_name([parameter1,parameter2...])
    RETURNS type
    runtime_body

下面就来创建一个函数,比如自定义一个两个整数的加法函数:

DELIMITER $
CREATE FUNCTION mysum(n1 INT,n2 INT) RETURNS INT
BEGIN
 DECLARE num int DEFAULT 0;
 SET num = n1 + n2;
 RETURN(NUM);
END $
DELIMITER ;

执行函数使用select即可:

mysql> SELECT mysum(1,2);
+------------+
| mysum(1,2) |
+------------+
|          3 |
+------------+
row in set (0.00 sec)

删除自定函数使用:

DROP FUNCTION func_name

比如删除上面创建的函数:

mysql> drop function mysum;
Query OK, 0 rows affected (0.00 sec)

 

Mysql常用函数总结(二)

标签:cto   sql   mit   格式   ifnull   --   需要   oct   提高   

原文地址:http://www.cnblogs.com/phpper/p/7581467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!