时间日期函数
当前日期和时间(now):
select now();
now() 函数取出的是 datetime 类型,即年-月-日 时 : 分 : 秒
当前日期(curdate):
select curdate();
返回的是当前日期,date 格式,即年-月-日
当前时间(curtime):
select curtime();
返回 time 格式的时间,即 时 : 分 : 秒
查看是那周第几天(dayofweek)
select dayofweek("2017-07-10");
前面的 0 可以不补充,和 date 类型一样,但是是以周日作为第一天开始的,类似的还有 dayofmonth, dayofyear ,dayname(星期几)
查看是那一年的第几周(week)
select week("2019-07-10");
md5(md5)
select md5("mysql");
流程控制函数
case ... when ... then ...
select case name, case gender when 1 then '男' when 0 then '女' else '保密' end as sex from test;
case 后面填写列名,然后类似编程语言中的 switch 一样,用 when ... then ... 连接。最后可以加 else 没有 else 且不符合所有 when 值则会返回 null,最后以 end 结束
if(exp1, exp2, exp3)
select if(gender=0.'优先','等待') as vip from test;
类似三目运算符,如果 exp1 为真则返回 exp2,否则返回 exp3
ifnull(exp1, exp2)
select ifnull(1/0,10);
如果表达式 exp1 为 null 则返回 exp2,否则返回 exp1
系统调试函数
返回用户与主机(user)
select user();
返回当前操作的数据库名(database)
select database();
返回数据库版本(version)
select version();
使用注意事项
- MySQL 中的函数使用必然会影响到查询速度,所以在建表时就应考虑到,通过合理的表结构减少函数使用
- 如果确实要用到函数,优先放在业务逻辑层处理,例如 Java,PHP,Python 等
- 在 MySQL 中使用了函数,则此列的索引将不能使用,例如,
select name email from table where right(position(email))='gmail.com'
中 email 列是有索引的,本可以加快查询速度,但是因为使用的不是 email 列,而是函数处理后 email 后的返回值,则该列的查询就很缓慢了
网友评论