记录一下今天学习的sql函数
背景
现在在做的项目有很多定时任务,需要定时处理满足条件的相关数据。在测试的时候我们一般是去修改数据库,使数据满足条件。比如,crm系统里的超时未跟进的线索会流回公海。
以前遇到这种要修改数据库的,我都是先对应的表筛选出指定的数据,在修改对应字段的值…(对,就是这么low,根本就忘了还有update这个东西)
下面就记录一下学到的两个sql函数:DATE_SUB(date,INTERVAL expr unit)函数,DATE_FORMAT(now(),format)函数;
然后再举例说明一下。
1.DATE_SUB(date,INTERVAL expr unit)函数
这个函数可以实现一个日期减去指定的数,对应的还有DATE_ADD(date,INTERVAL expr unit)函数,使一个日期加上指定的数。
date 表示要修改的日期;
interval 表示关键字;
exper 表示要增加或减去的数值;
unit 表示exper的单位;
2.DATE_FORMAT(now(),format)函数
这个函数可以获取到当前的时间。
now() 表示现在的时间,括号里不填参数;
format 表示获取到的时间,显示的格式可以是’%y-%m-%d %h:%i:%s’,即:年-月-日 时:分:秒
3.举个栗子
有一个crm的需求,跟进人最后跟进时间为上个月且没有签下订单的线索会被系统回收,然后再分配给其他人进行跟进。
也就是说当跟进人最后的跟进时间在上个月,就会对线索进行回收。
其中涉及的元素有:
跟进人最后的跟进时间,字段为follow_date,所属的表为chance;
现在的时间,可以用函数DATE_FORMAT(now(),‘%y-%m-%d %h:%i:%s’)
思路:follow_date = 现在时间 得到的值再让月份减去1
update
chance
set
follow_date = DATE_SUB( #把DATE_SUB函数得到的日期赋值给follow_date
DATE_FORMAT(
now(),'%y-%m-%d %h:%i:%s', # 获取当前的时间,格式为%y-%m-%d %h:%i:%s
)
INTERVAL 1 MONTH # 减去 1 ,1的单位为月
)
where chance_id = #需要修改最后跟进时间的线索的id
总结
今天学习了两个函数:DATE_SUB(date,INTERVAL expr unit)函数,DATE_FORMAT(now(),format)函数;
可以嵌套这使用,可以构造出场景,去测试需要执行定时器才能处理一些数据的需求。