MySQL提供的函数有很多,如果掌握了这些函数可以提高我们代码的简洁性和灵活性。但函数太多也就只能记住那些常用的函数了,而那些不常用的函数可以不需要记住,但要像数据库的索引一般,把它的作用记在脑海里,知道有这么一个东西,然后写成笔记记下来,等要用的时候去脑海里查找,最后翻开笔记找到该函数。
这些函数是多次用到,主要是在查询时做一些条件和插入。函数不会很复杂,但要灵活使用就没那么简单了
日期函数
DATE_FORMAT(time,参数)
time为一个时间点,括号里放一些指定格式参数,最后返回一个指定的日期格式,括号里常用的几个参数如下,可放多个。可根据业务灵活使用来做一些筛选条件!
- %j 返回该年的第x天
- %s 秒
- %i 分
- %H 时
- %d 日
- %m 月值(1-12)
- %Y 年
//返回2019-07
select DATE_FORMAT('2019-07-19','%Y-%m')
//2019-11-12-09-47-39
select DATE_FORMAT(now(),'%Y-%m-%d-%H-%i-%S')
DATE_SUB(time1,time2)
time1 为一个时间点,time2 为一个时间点间隔
- 实例,筛选创建时间(create_time 字段)在三十天前 的数据,如改30为-30 则为现在时间的30天后的数据
where create_time DATE_SUB(now(),INTERVAL 30 day);
- day 可换成 MINUTE (分钟)、HOUR(小时)、WEEK(周)、MONTH(月)等参数
to_days()
放入一个日期,返回一个天数,就是从0年份开始的天数
//筛选的条件就为昨天前
where to_days(now())-to_days(create_time)>1
获取时间
- now() 当前的年月日时分秒
select now()
- curtime() 当前的时分秒
select curtime()
工具类函数
生成uuid
- UUID()
select UUID()
- REPLACE(UUID(),’-’,’’) 将’-'符号替换掉,生成没有“-”的uuid
select REPLACE(UUID(),'-','')
拼接字符串
- CONCAT(s1,s2,…),如果有为null的直接返回nnull
- CONCAT_WS(x,s1,s2,…),每次拼接后都多一个x值
- REPLACE(s,s1,s2) 在s字符串中用s2替代s1
字符串截取
- left(str, length),从左边开始截取长度为3的字符串
- right(str, length) ,从右边截取length长度的str
截取长度为3的字符串
select left('abcde',3)
结果:abc
- substring(str, x); 从第x截取到结束
select substring('abcdef', 3);
结果:cdef
- substring(str, x, y) 从第x截取到y
select substring('abcdef', 4 , 5);
结果:def
if 函数
IF(expr1,expr2,expr3)
expre1 为判断表达式,当expr1满足后则使用expr2,不满足则使用expr3
- 例子
// 当flag字段为0时,不修改age字段,不等于0时则修改age字段为5
upta table set age = if(flag=0,age,5) where id= 1
去空
- trim()
比较大小
- between 关键字
//年龄在2到5岁之间
where age between 2 and 5;