如何通过与之前的值进行比较并获得结果来获得时间差异。例如,请说明 有 2017-01-01 13:00:00 2017-01-01 13:15:00
在找到差异后15分钟我需要差异,怎么做?
答案 0 :(得分:0)
首先,您必须使用TalendDate.diffDate(column1,column2,"pattern")
来获取时差。
然后,如果要将当前值与之前的值(在同一列中)进行比较,可以在流上设置序列,它将帮助您确定哪一个是先前的值。然后,您只需要读取两次流量,并在当前序列和当前序列-1之间建立内部连接,以获取currentDate和上一个Date。
第一个subjob: YourFlow - > tMap - > tHashOutput
在tMap中,向您的字段添加新的“序列”列并使用Numeric.sequence("s1",1,1)
。
这样所有行都将具有ID。
然后,读取你的Hash两次,并在“sequence - 1”上加入流程
tHashInput_1----|
|--tMap--->Output
tHashInput_2----|
使用两个Dates字段将TalendDate.diffDate()方法放在输出中。
答案 1 :(得分:0)
这是另一种选择:
以这种方式开始定义起始talend作业执行时间(此处为tJava,但您也可以使用tSetGlobalVar组件):
globalMap.put("startDate", TalendDate.getDate("CCYY/MM/DD hh:mm:ss"));
稍后在tJava中的作业中使用以下代码:
String endDate = TalendDate.getDate("CCYY/MM/DD hh:mm:ss");
long executionTime = format.parse(endDate).getTime() - format.parse(((String)globalMap.get("startDate"))).getTime();
System.out.println("Execution Time : "+(executionTime/(60*60*1000))+" Hour(s) "+(executionTime/(60*1000)%60)+" Minute(s) "+(executionTime/1000%60)+" second(s).");