如何计算今天创建的昨天记录?

时间:2019-01-10 11:17:13

标签: openedge progress-4gl progress-db

嗨,我想知道如何计算昨天创建的记录,以及如何计算今天产生的记录。 请看一下我的代码。

   FOR EACH womf_worder OF sfcf_au_ship WHERE womf_worder.word_production_status = "B"
                                 AND womf_worder.word_build_date = DATE(TODAY)    
                                 AND womf_worder.word_build_time GE  tt_shift.shft_start_hour
                                 AND womf_worder.word_build_time LE tt_shift.shft_stop_hour NO-LOCK: 

     IF AVAILABLE womf_worder THEN DO: 
         i = i + 1.         
     END.

tt_shift.shft_start_hour = 06:00:00和stop_hour = 23:50:00

在这里,我的问题是如何计算明天的记录和昨天的记录。我该如何使用DATETIME?

2 个答案:

答案 0 :(得分:4)

如果数据库中的任何字段为DATETIME,则

DATETIME将非常有用。快速锁定您的示例使我认为您具有单独的日期和时间字段。我不确定TIME字段是什么。也许是整数还是字符串?

您不需要在FOR循环中进行可用性检查。它用于FINDS,也可能用于JOINS,其中循环中可能没有记录。对于像这样的基本FOR EACH,只会处理可用的记录。

如果时间确实是整数或字符串,则您的代码可以很好地与可用性检查的次要修复一起工作。

   FOR EACH womf_worder OF sfcf_au_ship WHERE womf_worder.word_production_status = "B"
                                 AND womf_worder.word_build_date = DATE(TODAY)    
                                 AND womf_worder.word_build_time GE tt_shift.shft_start_hour
                                 AND womf_worder.word_build_time LE tt_shift.shft_stop_hour NO-LOCK: 

         i = i + 1.         
     END.

答案 1 :(得分:1)

for each womf_worder of sfcf_au_ship where 
         womf_worder.word_production_status EQ "B"                      and 
         womf_worder.word_build_date        EQ today - 1                and 
         womf_worder.word_build_time        GE tt_shift.shft_start_hour and
         womf_worder.word_build_time        LE tt_shift.shft_stop_hour  
         no-lock: 

    assign i = i + 1.
end.

注意:

  1. “ today”函数返回一个datetype值,不需要强制转换date();
  2. 使用表达式“今天-1”;
  3. 对于“每个”块,不需要“如果可用”条件,如果AVM找到任何记录,它就不可用;