我想弄清楚如何写一个 Openedge 查询,我可以回顾4个小时。我以前一直在努力使用 TIME 语法。如果我理解正确, Openedge 中的 TIME 表示从午夜开始在秒中。我想写的查询每天会运行4次,回顾4个小时。
有没有办法使用 TIME 执行此操作?也许我必须编写4个不同的查询,只能从特定时间开始记录?
非常感谢我能得到任何帮助,非常感谢!
马丁
答案 0 :(得分:2)
您没有很好地描述表格的内容或布局。
是,TIME,in Progress ABL包含自午夜以来的秒数。所以16:20例如是58800(16 * 3600 + 20 * 60)。
假设表中的字段包含一个整数,表示您可以这样做的时间,以选择最多四小时前创建的记录:
DEFINE VARIABLE iTime AS INTEGER NO-UNDO.
/* I find it easier to write like this but you can very well do = TIME - 14400 instead */
iTime = TIME - 4 * 3600.
FOR EACH tablename NO-LOCK WHERE tablename.createtime >= iTime:
/* Do something */
END.
注意:也许您还需要检查创建日期?处理午夜?
另一种选择可能是查看DATETIME类型。在那里,你可以做一些操作,如增加和分散一些时间。
DEFINE VARIABLE datnow AS DATETIME NO-UNDO.
DEFINE VARIABLE datthen AS DATETIME NO-UNDO.
datnow = NOW.
DISPLAY datnow.
datthen = ADD-INTERVAL(datnow, -4, "hours").
DISPLAY datthen.