mysql中一些常用函数

本文介绍了MySQL中处理日期和字符串的多种实用函数,包括FIND_IN_SET、CONCAT、substring_index、DATEDIFF等,展示了如何进行日期计算、字符串拼接及截取,并对比了FIND_IN_SET与IN关键字的不同应用场景。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值