我正在试图找出如何编写一个Openedge查询,在这里我可以回顾4个小时。我以前一直在使用TIME语法。如果我正确理解,TIME表示在Openedge中是从午夜开始的几秒钟内。我试图编写的查询将每天运行4次,回首4个小时。
有任何方法可以使用TIME来完成这个任务吗?也许我必须写4种不同的查询,只从特定的时间开始提取记录?
非常感谢您对我的帮助,非常感谢!
马丁
发布于 2014-11-12 15:25:49
您没有很好地描述表的内容或布局。
是的,时间,正在进行的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. https://stackoverflow.com/questions/26889928
复制相似问题