Forum Discussion
robandemmy
3 years agoFrequent Visitor
Calculating Machine Production
I have the below table: MACHINE LOADTIME UNLOADTIME Process Time (Unload-Load) M01 2022/08/04 6:32:00 2022/08/04 14:42:00 490 M07 2022/08/04 6:15:00 2022/08/04 13:57:00 462 M...
- 3 years ago
Hi robandemmy ,
I forgot to modifiy something in the E shift calculation, it has been changed now. Please try:
M shift = VAR _a = DATE ( YEAR ( [LOADTIME] ), MONTH ( [LOADTIME] ), DAY ( [LOADTIME] ) ) + TIME ( 7, 0, 0 ) VAR _b = DATE ( YEAR ( [LOADTIME] ), MONTH ( [LOADTIME] ), DAY ( [LOADTIME] ) ) + TIME ( 19, 0, 0 ) VAR _c = DATE ( YEAR ( [UNLOADTIME] ), MONTH ( [UNLOADTIME] ), DAY ( [UNLOADTIME] ) ) + TIME ( 7, 0, 0 ) VAR _sameday = SWITCH ( TRUE (), [LOADTIME] < _a && [UNLOADTIME] < _b, DATEDIFF ( _a, [UNLOADTIME], MINUTE ), [LOADTIME] < _a && [UNLOADTIME] >= _b, DATEDIFF ( _a, _b, MINUTE ), [LOADTIME] >= _a && [UNLOADTIME] < _b, DATEDIFF ( [LOADTIME], [UNLOADTIME], MINUTE ), [LOADTIME] >= _a && [LOADTIME] <= _b && [UNLOADTIME] >= _b, DATEDIFF ( [LOADTIME], _b, MINUTE ), [LOADTIME] >= _b && [UNLOADTIME] >= _b, 0 ) VAR _diffday = SWITCH ( TRUE (), [LOADTIME] < _b && [UNLOADTIME] < _c, DATEDIFF ( [LOADTIME], _b, MINUTE ), [LOADTIME] < _b && [UNLOADTIME] >= _c, DATEDIFF ( [LOADTIME], _b, MINUTE ) + DATEDIFF ( _c, [UNLOADTIME], MINUTE ), [LOADTIME] >= _b && [UNLOADTIME] < _c, 0, [LOADTIME] >= _b && [UNLOADTIME] >= _c, DATEDIFF ( _c, [UNLOADTIME], MINUTE ) ) RETURN IF ( _a = _c, _sameday, _diffday ) E shift = VAR _a = DATE ( YEAR ( [LOADTIME] ), MONTH ( [LOADTIME] ), DAY ( [LOADTIME] ) ) + TIME ( 7, 0, 0 ) VAR _b = DATE ( YEAR ( [LOADTIME] ), MONTH ( [LOADTIME] ), DAY ( [LOADTIME] ) ) + TIME ( 19, 0, 0 ) VAR _c = DATE ( YEAR ( [UNLOADTIME] ), MONTH ( [UNLOADTIME] ), DAY ( [UNLOADTIME] ) ) + TIME ( 7, 0, 0 ) VAR _sameday = SWITCH ( TRUE (), [LOADTIME] < _a && [UNLOADTIME] < _b, DATEDIFF ( [LOADTIME], _a, MINUTE ), [LOADTIME] < _a && [UNLOADTIME] >= _b, DATEDIFF ( [LOADTIME], _a, MINUTE ) + DATEDIFF ( _b, [UNLOADTIME], MINUTE ), [LOADTIME] >= _a && [UNLOADTIME] < _b, 0, [LOADTIME] >= _a && [LOADTIME] <= _b && [UNLOADTIME] >= _b, DATEDIFF ( _b, [UNLOADTIME], MINUTE ), [LOADTIME] >= _b && [UNLOADTIME] >= _b, DATEDIFF ( [LOADTIME], [UNLOADTIME], MINUTE ) ) VAR _diffday = SWITCH ( TRUE (), [LOADTIME] < _b && [UNLOADTIME] < _c, DATEDIFF ( _b, [UNLOADTIME], MINUTE ), [LOADTIME] < _b && [UNLOADTIME] >= _c, DATEDIFF ( _b, _c, MINUTE ), [LOADTIME] >= _b && [UNLOADTIME] < _c, DATEDIFF ( [LOADTIME], [UNLOADTIME], MINUTE ), [LOADTIME] >= _b && [UNLOADTIME] >= _c, DATEDIFF ( [LOADTIME], _c, MINUTE ) ) RETURN IF ( _a = _c, _sameday, _diffday )Final output:
Best Regards,
Jianbo Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
v-jianboli-msft
3 years agoCommunity Support
Hi robandemmy ,
I forgot to modifiy something in the E shift calculation, it has been changed now. Please try:
M shift =
VAR _a =
DATE ( YEAR ( [LOADTIME] ), MONTH ( [LOADTIME] ), DAY ( [LOADTIME] ) )
+ TIME ( 7, 0, 0 )
VAR _b =
DATE ( YEAR ( [LOADTIME] ), MONTH ( [LOADTIME] ), DAY ( [LOADTIME] ) )
+ TIME ( 19, 0, 0 )
VAR _c =
DATE ( YEAR ( [UNLOADTIME] ), MONTH ( [UNLOADTIME] ), DAY ( [UNLOADTIME] ) )
+ TIME ( 7, 0, 0 )
VAR _sameday =
SWITCH (
TRUE (),
[LOADTIME] < _a
&& [UNLOADTIME] < _b, DATEDIFF ( _a, [UNLOADTIME], MINUTE ),
[LOADTIME] < _a
&& [UNLOADTIME] >= _b, DATEDIFF ( _a, _b, MINUTE ),
[LOADTIME] >= _a
&& [UNLOADTIME] < _b, DATEDIFF ( [LOADTIME], [UNLOADTIME], MINUTE ),
[LOADTIME] >= _a
&& [LOADTIME] <= _b
&& [UNLOADTIME] >= _b, DATEDIFF ( [LOADTIME], _b, MINUTE ),
[LOADTIME] >= _b
&& [UNLOADTIME] >= _b, 0
)
VAR _diffday =
SWITCH (
TRUE (),
[LOADTIME] < _b
&& [UNLOADTIME] < _c, DATEDIFF ( [LOADTIME], _b, MINUTE ),
[LOADTIME] < _b
&& [UNLOADTIME] >= _c, DATEDIFF ( [LOADTIME], _b, MINUTE ) + DATEDIFF ( _c, [UNLOADTIME], MINUTE ),
[LOADTIME] >= _b
&& [UNLOADTIME] < _c, 0,
[LOADTIME] >= _b
&& [UNLOADTIME] >= _c, DATEDIFF ( _c, [UNLOADTIME], MINUTE )
)
RETURN
IF ( _a = _c, _sameday, _diffday )
E shift =
VAR _a =
DATE ( YEAR ( [LOADTIME] ), MONTH ( [LOADTIME] ), DAY ( [LOADTIME] ) )
+ TIME ( 7, 0, 0 )
VAR _b =
DATE ( YEAR ( [LOADTIME] ), MONTH ( [LOADTIME] ), DAY ( [LOADTIME] ) )
+ TIME ( 19, 0, 0 )
VAR _c =
DATE ( YEAR ( [UNLOADTIME] ), MONTH ( [UNLOADTIME] ), DAY ( [UNLOADTIME] ) )
+ TIME ( 7, 0, 0 )
VAR _sameday =
SWITCH (
TRUE (),
[LOADTIME] < _a
&& [UNLOADTIME] < _b, DATEDIFF ( [LOADTIME], _a, MINUTE ),
[LOADTIME] < _a
&& [UNLOADTIME] >= _b, DATEDIFF ( [LOADTIME], _a, MINUTE ) + DATEDIFF ( _b, [UNLOADTIME], MINUTE ),
[LOADTIME] >= _a
&& [UNLOADTIME] < _b, 0,
[LOADTIME] >= _a
&& [LOADTIME] <= _b
&& [UNLOADTIME] >= _b, DATEDIFF ( _b, [UNLOADTIME], MINUTE ),
[LOADTIME] >= _b
&& [UNLOADTIME] >= _b, DATEDIFF ( [LOADTIME], [UNLOADTIME], MINUTE )
)
VAR _diffday =
SWITCH (
TRUE (),
[LOADTIME] < _b
&& [UNLOADTIME] < _c, DATEDIFF ( _b, [UNLOADTIME], MINUTE ),
[LOADTIME] < _b
&& [UNLOADTIME] >= _c, DATEDIFF ( _b, _c, MINUTE ),
[LOADTIME] >= _b
&& [UNLOADTIME] < _c, DATEDIFF ( [LOADTIME], [UNLOADTIME], MINUTE ),
[LOADTIME] >= _b
&& [UNLOADTIME] >= _c, DATEDIFF ( [LOADTIME], _c, MINUTE )
)
RETURN
IF ( _a = _c, _sameday, _diffday )
Final output:
Best Regards,
Jianbo Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
robandemmy
3 years agoFrequent Visitor
Works great, thanks!!