hql相关
Posted rage_angel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hql相关相关的知识,希望对你有一定的参考价值。
需求:需要查询一批订单,根据订单中时间,每隔24h之后执行某些操作。
实现:
1、查询符合要求的数据
1.1、从字段信息里截取出时间字段:substring(str,2,14) 。三个参数分别代表:字段名,从第几位开始截取(坐标从1开始),截取长度。
1.2、如何判断当前时间与订单中时间是否相隔24h了呢?我想的是两个时间差,24取余=0
1.2.1、两时间差,这里我用的TIMESTAMPDIFF(
)。unit取hour。unit
,datetime_expr1
,datetime_expr2
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列表取数据进行相关操作
以上是关于hql相关的主要内容,如果未能解决你的问题,请参考以下文章