最近在写PHP的接口服务,需要从Mysql数据库按日期(不带时间)查询数据,而数据库中字段是按照“日期+时间”存储的,因此想到了使用Mysql字符串截取函数截取日期部分。
简单经过总结,在Mysql处理字符串截取的函数有以下几个可以使用:
1.left(str, len),返回字符串str左侧的字符
2. right(str, len),返回字符串str右侧的字符
3. substring(str, pos)/ substring(str, pos, len),返回字符串str的子串
4. substring_index(str, delim, count),根据定界符以及count,返回字符串str的子串
下面简单介绍以上四个函数的用法:
1.left(str, len)
left() 函数返回字符串str左侧长度为 len 的字符,如下:-- 返回当前时间的日期(日期字符串左侧的10个字符)
SELECT LEFT(NOW(),10);
结果如下图:
2.right(str, len)
right() 函数返回字符串str左侧长度为 len 的字符,如下:-- 返回当前时间(日期字符串右侧的8个字符)
SELECT RIGHT(NOW(),8);
结果如下:
3.substring(str, pos)/ substring(str, pos, len)
substring() 函数返回字符串str从指定位置pos开始的子串,如果不指定截取的长度值len,则截取从位置pos开始到字符串str结束的全部子串;如果指定截取的长度len,则截取从位置pos开始长度为len的子串。
注意:
1. pos的索引值从1开始,而不是0
2. 返回的子字符串包含pos位置的字符
举例1:-- 返回从第2个字符开始到结束的子串
SELECT SUBSTRING('123456',2);
举例2:
-- 返回从第2个字符开始,截取长度为2的子串
SELECT SUBSTRING('123456',2,2);
4.substring_index(str, delim, count)
substring_index() 函数根据定界符delim以及匹配到的定界符的数量count,返回字符串str的子串。
注意:
1. 如果count为正值,则返回匹配到的第count个定界符(从左边开始)左边的一切内容(不包含定界符)
2. 如果count为负值,则返回匹配到的第count个定界符(从右边开始)右边的一切内容(不包含定界符)。
举例1:-- 以逗号','为定界符,返回匹配到的第2个定界符左边的所有内容
select substring_index('a,b,c,d',',',2);
举例2:-- 以逗号','为定界符,返回匹配到的第2个定界符右边的所有内容
SELECT SUBSTRING_INDEX('a,b,c,d',',',-2);