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,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列表取数据进行相关操作

以上是关于hql相关的主要内容,如果未能解决你的问题,请参考以下文章

在hive中运行HQL时抛出的异常

Hibernate HQL查询 插入 更新(update)实例

无效的列名“销售季度”错误消息

如何将一周放入日历时间层次结构中?

hql相关

转: Hibernate HQL查询 插入 更新(update)实例