我试图弄清楚如何编写一个Openedge查询,我可以在其中回顾 4 小时。我之前一直在努力使用TIME语法。如果我理解正确,Openedge中的TIME表示从午夜开始以秒为单位。我正在尝试编写的查询每天运行 4 次,回顾 4 小时。
有没有办法使用TIME来做到这一点?也许我必须编写 4 个仅从特定时间开始提取记录的不同查询?
非常感谢我能得到的任何帮助,非常感谢!
马丁
我试图弄清楚如何编写一个Openedge查询,我可以在其中回顾 4 小时。我之前一直在努力使用TIME语法。如果我理解正确,Openedge中的TIME表示从午夜开始以秒为单位。我正在尝试编写的查询每天运行 4 次,回顾 4 小时。
有没有办法使用TIME来做到这一点?也许我必须编写 4 个仅从特定时间开始提取记录的不同查询?
非常感谢我能得到的任何帮助,非常感谢!
马丁
您没有很好地描述表格的内容或布局。
是的,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.