Как рассчитать вчерашние созданные записи с сегодняшним днем? - PullRequest
0 голосов
/ 10 января 2019

Привет, я хотел бы знать, как рассчитать записи, которые были созданы вчера в какое-то время, и рассчитать с сегодняшними записями. пожалуйста, посмотрите мой код.

   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 голосов
/ 28 января 2019
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. Функция "сегодня" возвращает значение типа даты, не нуждается в дате приведения ();
  2. Используйте выражение "сегодня - 1";
  3. Не нужно условие «если доступно» для «для каждого» блока, если AVM находит какую-либо запись, оно всегда доступно;
0 голосов
/ 10 января 2019

DATETIME было бы очень удобно, если бы любое поле в базе данных было DATETIME. Быстрая блокировка на вашем примере заставляет меня думать, что у вас есть отдельные поля даты и времени. Я не уверен, что поле ВРЕМЯ. Возможно целое число или строка?

Вам не нужна проверка доступности в цикле 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.
...