1、FIND_IN_SET(str,strlist); #如果字符串str是在的strlist组成的N子串的字符串列表,返回值的范围为1到N。
2、SELECT CONCAT(CURDATE()," 00:00:00"); #将两个拼接在一起
3、SELECT substring_index("2019/3/8 星期五"," ",1); #返回2019/3/8;截取第一个空格前面的内容
1.1
select FIND_IN_SET('2', '1,2'); 返回2
select FIND_IN_SET('6', '1'); 返回0
示例:
select * from user where FIND_IN_SET(id,'1,2,3,4');
使用find_in_set函数一次返回多条记录
id 是一个表的字段,然后每条记录分别是id等于1,2,3,4,5的时候
有点类似in (集合)
select * from user where id in (1,2,3,4,5);
程序中可以适用这样的场景,比如:ID的字段是字符串类型的(ID=zk20170601),这时就可以使用这个了,FIND_IN_SET( ID ,'zk20170601,zk20170602,zk20170603,zk20170604');这样就方便的解决了,当然还有其他方式可以解决,如mybatis中的<iterate>标签或<foreach>标签。
注意:FIND_IN_SET和IN还是有细微的差别的,比如: id in (list)中的list必须是常量,FIND_IN_SET(id,list)中的list可以是变量。
SELECT DATEDIFF("2012-03-01 13:50:59","2012-02-01") #得到天数之差29,只与年月日有关,与时分秒无关
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY) #把时间往前推30分钟,单位可以自定义DAY天、HOUR时、MINUTE分、SECOND秒
# MySQL 为日期增加一个时间间隔:date_add()
now() //now函数为获取当前时间
select date_add(now(), interval 1 day); - 加1天
select date_add(now(), interval 1 hour); -加1小时
select date_add(now(), interval 1 minute); - 加1分钟
select date_add(now(), interval 1 second); -加1秒
select date_add(now(), interval 1 microsecond);-加1毫秒
select date_add(now(), interval 1 week);-加1周
select date_add(now(), interval 1 month);-加1月
select date_add(now(), interval 1 quarter);-加1季
select date_add(now(), interval 1 year);-加1年
MySQL adddate(), addtime()函数,可以用date_add() 来替代。
2. MySQL 为日期减去一个时间间隔:date_sub()
MySQL date_sub() 日期时间函数 和date_add() 用法一致。
MySQL 中subdate(),subtime()函数,建议,用date_sub()来替代。
SELECT PERIOD_DIFF(DATE_FORMAT('2018-12-20','%Y%m'),DATE_FORMAT(NOW(),'%Y%m')); #3 now()=2018-09-14 17:22:56
SELECT DATEDIFF('2018-10-20',CURDATE()) AS d, #36
(YEAR('2019-10-20')-YEAR(CURDATE()))*12 AS Y, #12
MONTH('2019-10-20')-MONTH(CURDATE()) AS m, #1
(YEAR('2019-10-20')-YEAR(CURDATE()))*12 + MONTH('2019-10-20')-MONTH(CURDATE()) AS result; #13