2

我试图弄清楚如何编写一个Openedge查询,我可以在其中回顾 4 小时。我之前一直在努力使用TIME语法。如果我理解正确,Openedge中的TIME表示从午夜开始以秒为单位。我正在尝试编写的查询每天运行 4 次,回顾 4 小时。

有没有办法使用TIME来做到这一点?也许我必须编写 4 个仅从特定时间开始提取记录的不同查询?

非常感谢我能得到的任何帮助,非常感谢!

马丁

4

1 回答 1

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. 
于 2014-11-12T15:25:49.687 回答