TIME的Openedge语法减去4小时

时间:2014-11-12 14:58:15

标签: syntax progress-4gl openedge progress-db

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

有没有办法使用 TIME 执行此操作?也许我必须编写4个不同的查询,只能从特定时间开始记录?

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

马丁

1 个答案:

答案 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.