Mysql 的日期函数
DATE_FORMAT(date,format)
按照指定的格式,格式化日期,我们来使用一下:
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s');
一般我们使用的时候,都是经常在条件中使用的这个比如:
where DATE_FORMAT(createTime,'%Y-%m-%d') = '2020-11-11'
而且我们也可以对他进行分组比如:
GROUP BY DATE_FORMAT(createTime,'%H');
这样的分组条件就是小时,每小时有多少数据,如果是每天,则换成 %d
就可以了
STR_TO_DATE(str,format)
这个则是把我们这个字符串转为日期
比如下面这样的:
SELECT STR_TO_DATE('2023-11-21','%Y-%m-%d');
YEAR()
MONTH()
DAY()
SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAY(NOW())
参数我们传入日期,最后给我们返回的就是我们想要的年月日的信息。
DAYOFYEAR(date)
这个函数几乎很少用,是用来表示,当前日期是今年的第几天
SELECT DAYOFYEAR(NOW());
333
其实在开发过程中,我们用到的日期函数并不会很多,我们用到的关于这个字符串函数,才是最多的。
字符串函数
CHAR_LENGTH(str)
CHARACTER_LENGTH(str)
这两个函数都是用来返回字符串的字符数的:
select CHAR_LENGTH("hello");
select CHARACTER_LENGTH('hello');
结果:5
CONCAT(str1,str2,...)
CONCAT_WS(separator,str1,str2,...)
第一个就是多个字符串合并成一个字符串,第二个的意思则是,再中间可以拼接一段内容,或者理解为用中间的内容隔开。
这个几乎是我们经常用的函数,用来做两个字段的合并等等操作
SELECT CONCAT('hello','world');
helloworld
SELECT CONCAT_WS(',','hello','world');
hello,world
FIELD(str,str1,str2,str3,...)
返回第一个字符串再字符串列表的位置:
SELECT FIELD('x','d','c','x');
3
TRIM(' xxxx ')
这个也是我们在开发的时候经常会用到,但是在数据库层面其实很少用到,最多的还是在 Java 代码里面去除空格使用,再数据库中,含义也是一样的,都是用来去除字符串开始和结尾的空格。
这个时候就有人想问了,如果我只想去掉开头的,或者只想去掉结尾的空格怎么办?
LTRIM(str)
RTRIM(str)
第一个是去掉开始的空格,第二个是去掉结尾的空格,这个了不起都不用给大家演示,一个是去掉左边的,一个是去掉右边的, 没有R 没有L 的 则是两边都去掉。
UCASE(str)
UPPER(str)
这两个函数效果是一样的,转换字符串字符为大写,既然有大写,那么就势必会有小写
LCASE(str)
LOWER(str)
上述两个方法是吧字符串转为小写
**REPLACE() **
将字符串中出现的所有子字符串替换为新的子字符串
REVERSE()
这个函数就比较有意思了,把字符串给翻转过来,但是这个函数不是属于常用的函数,了不起实在是想不出什么需求,需要吧这个字符串给你倒过来,难道还想倒背如流?
聚合函数
在MySQL中,聚合函数主要由:count,sum,min,max,avg,这些聚合函数我们之前都学过,不再重复。这里我们学习另外一个函数:group_concat(),该函数用户实现行的合并。
group_concat()函数首先根据group by指定的列进行分组,并且用分隔符分隔,将同一个分组中的值连接起来,返回一个字符串结果。
group_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separator '分隔符'])
注意:
- 使用distinct可以排除重复值;
- 如果需要对结果中的值进行排序,可以使用order by子句;
- separator是一个字符串值,默认为逗号。
数学函数
round(x,保留位数)函数
四舍五入; 当对正数进行四舍五入:按照正常的计算方式,四舍五入即可。当对负数进行四舍五入:先把符号丢到一边,对去掉负号后的正数进行四舍五入,完成以后,再把这个负号,补上即可。
select round(1.595658,3) as out_put;
ceil(x)函数
向上取整,返回>=该参数的最小整数。求的是大于等于这个数字的最小整数
select ceil(1.9) as out_put;
select ceil(1.1) as out_put;
至于数学函数中的 avg 和 sum 了不起都不用说了,一个平均数,一个求和,