Webintelligence formula to represent the difference between two dates HH:MM:SS formatted.

Please suppose you have two dates (referred to the same day), expressed in the format:

HH:MM:SS

Please help me to write the formula to represent the difference between DATE1 and DATE2, with the MINUS sign if DATE2 is earlier than DATE1.

Example:

DATE1 = 01:23:57
DATE2 = 03:46:59
DIFFERENCE = 02:23:02

Other example:

DATE1 = 08:45:50
DATE2 = 08:43:50
DIFFERENCE = - 00:02:00

LVL 1
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Commented:

time(datediff(seconds,date1,date2))
0
Author Commented:
This is the formula in BO Client, could you help me to translate it into WebIntelligence?
``````=(If (Segno (InNumero(Sottostringa (<DATE2> , 1 , 2) ) * 3600 + InNumero(Sottostringa (<DATE2> , 4 , 2) ) * 60 + InNumero (Sottostringa (<DATE2> , 7 , 2)) -

(InNumero(Sottostringa (<DATE1> , 1 , 2) ) * 3600 + InNumero(Sottostringa (<DATE1> , 4 , 2) ) * 60 + InNumero (Sottostringa (<DATE1> , 7 , 2))) ) = -1) Then

"-" Else "") + (FormatoNumero (InteroInf (Ass (InNumero(Sottostringa (<DATE2> , 1 , 2) ) * 3600 + InNumero(Sottostringa (<DATE2> , 4 , 2) ) * 60 + InNumero

(Sottostringa (<DATE2> , 7 , 2)) - (InNumero(Sottostringa (<DATE1> , 1 , 2) ) * 3600 + InNumero(Sottostringa (<DATE1> , 4 , 2) ) * 60 + InNumero

(Sottostringa (<DATE1> , 7 , 2))) ) / 3600 ), "00")) + ":" + (FormatoNumero (InteroInf ( Resto (Ass (InNumero(Sottostringa (<DATE2> , 1 , 2) ) * 3600 +

InNumero(Sottostringa (<DATE2> , 4 , 2) ) * 60 + InNumero (Sottostringa (<DATE2> , 7 , 2)) - (InNumero(Sottostringa (<DATE1> , 1 , 2) ) * 3600 + InNumero

(Sottostringa (<DATE1> , 4 , 2) ) * 60 + InNumero (Sottostringa (<DATE1> , 7 , 2))) ) , 3600 ) / 60), "00")) + ":" + (FormatoNumero (Resto ( Resto (Ass

(InNumero(Sottostringa (<DATE2> , 1 , 2) ) * 3600 + InNumero(Sottostringa (<DATE2> , 4 , 2) ) * 60 + InNumero (Sottostringa (<DATE2> , 7 , 2)) - (InNumero

(Sottostringa (<DATE1> , 1 , 2) ) * 3600 + InNumero(Sottostringa (<DATE1> , 4 , 2) ) * 60 + InNumero (Sottostringa (<DATE1> , 7 , 2))) ) , 3600 ), 60),

"00"))
``````
0
Author Commented:
PCIIain: are you really sure that your formula is working good on a WebIntelligence system?!

Please note that date1 is a STRING so formatted "HH:MM:SS", and date2 is a STRING so formatted "HH:MM:SS".
0
Author Commented:

=If (ÈNullo([Data Ora Passaggio Effettiva]); ""; (If (Segno (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData ([Data Ora Passaggio Effettiva]; "hh:mm:ss") ; 7 ; 2)) - (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista]; "hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss"); 7 ; 2))) ) = -1; "-"; "")

+

(FormatoNumero (InteroInf (Ass (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 7 ; 2)) - (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 7 ; 2))) ) / 3600 ); "00"))

+

":"

+

(FormatoNumero (InteroInf ( Resto (Ass (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva]; "hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 7 ; 2)) - (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 7 ; 2))) ) ; 3600 ) / 60); "00"))

+

":"

+

(FormatoNumero (Resto ( Resto (Ass (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 7 ; 2)) - (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 7 ; 2))) ) ; 3600 ); 60); "00")))
)
0
Author Commented:

``````
=If (ÈNullo([Data Ora Passaggio Effettiva]); ""; (If (Segno (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData ([Data Ora Passaggio Effettiva]; "hh:mm:ss") ; 7 ; 2)) - (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista]; "hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss"); 7 ; 2))) ) = -1; "-"; "")

+

(FormatoNumero (InteroInf (Ass (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 7 ; 2)) - (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 7 ; 2))) ) / 3600 ); "00"))

+

":"

+

(FormatoNumero (InteroInf ( Resto (Ass (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva]; "hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 7 ; 2)) - (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 7 ; 2))) ) ; 3600 ) / 60); "00"))

+

":"

+

(FormatoNumero (Resto ( Resto (Ass (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Effettiva];"hh:mm:ss") ; 7 ; 2)) - (InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 1 ; 2) ) * 3600 + InNumero(Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 4 ; 2) ) * 60 + InNumero (Sottostringa (FormatoData([Data Ora Passaggio Prevista];"hh:mm:ss") ; 7 ; 2))) ) ; 3600 ); 60); "00")))
)
``````
0

Experts Exchange Solution brought to you by