hql相关

需求:需要查询一批订单,根据订单中时间,每隔24h之后执行某些操作。

实现:

1、查询符合要求的数据

1.1、从字段信息里截取出时间字段:substring(str,2,14) 。三个参数分别代表:字段名,从第几位开始截取(坐标从1开始),截取长度。

1.2、如何判断当前时间与订单中时间是否相隔24h了呢?我想的是两个时间差,24取余=0

1.2.1、两时间差,这里我用的TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)。unit取hour。

SELECT MOD(TIMESTAMPDIFF(HOUR,'2016-06-29 16:00:00','2016-07-13 17:00:00'),24) from dual

unit:可选值:

FRAC_SECOND(微秒),SECOND(秒),MINUTE(分钟),HOUR(小时),DAY(天),WEEK (星期),MONTH(月),QUARTER(季度),YEAR (年)

1.2.2、当前时间获取方式:

select current_date(), current_time(), current_timestamp() from dual;

current_date():2016-07-13

current_time() :14:39:58  

current_timestamp()2016-07-13 14:39:58

1.2.3、求绝对值,开平方,求余

select  abs(t.p1),sqrt(t.p1),mod(t.p1, 2) from test t;

1.2.4、Floor(X) 向下取整 Floor(0.2)=0;Floor(15.8)=15


查询语句:

SELECT o.partnerOrderId,o.DVAuthMethod,DVAuthKey,o.DVAuthValue,
MOD(TIMESTAMPDIFF(HOUR,substring(o.dvAuthValue,2,14),current_timestamp()),24) FROM Orders o 
WHERE o.source='aliyun'
and (o.dvAuthMethod = 'FILE' or o.dvAuthMethod ='DNS')
and o.preRemove != 1 and substring(o.dvAuthValue,2,8)!=current_date()

2、每隔1h从数据库查询一次放入redis列表

3、每隔10min执行从redis列表取数据进行相关操作

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值