Karen,

Here’s a quick example for elapsed times – I won’t swear it’s perfect in every 
situation because I haven’t tested things I guess will need further conditions 
like equal hours and so on but it should give you enough ideas:

Regards,
Alastair.

CLS

SET VAR vFirstDate DATETIME = NULL

SET VAR vSecondDate DATETIME = NULL

SET VAR vElapsedTime TIME = NULL

SET VAR vElapsedDays INTEGER = NULL

SET VAR vFirstTime TIME = NULL

SET VAR vSecondTime TIME = NULL

SET VAR vFirstDate = '01/10/2012 12:00:00'

SET VAR vSecondDate = '02/10/2012 09:09:09'

WRITE 'Start:', .vFirstDate, '; End:', .vSecondDate

SET VAR vElapsedTime = (ADDSEC('0:00:00', (.vSecondDate - .vFirstDate) ))

WRITE 'Correct time returned:', .vElapsedTime

WRITE ' '

SET VAR vFirstDate = '01/10/2012 12:00:00'

SET VAR vSecondDate = '03/10/2012 09:09:09'

WRITE 'Start:', .vFirstDate, '; End:', .vSecondDate

SET VAR vElapsedTime = (ADDSEC('0:00:00', (.vSecondDate - .vFirstDate) ))

WRITE 'Wrong time returned (out by 24 hours):', .vElapsedTime

 

SET VAR vFirstDate = '01/10/2012 12:00:00'

SET VAR vSecondDate = '03/10/2012 09:09:09'

SET VAR vElapsedDays = ( (DEXTRACT(.vSecondDate)) - (DEXTRACT(.vFirstDate)) )

WRITE 'Incorrect elapsed days:', .vElapsedDays

SET VAR vFirstTime = (TEXTRACT(.vFirstDate))

SET VAR vSecondTime = (TEXTRACT(.vSecondDate))

IF vFirstTime > .vSecondTime THEN

SET VAR vElapsedDays = (.vElapsedDays - 1)

ENDIF

WRITE 'Correct elapsed days:', .vElapsedDays

 

SET VAR vElapsedTime = (ADDSEC('0:00:00', (.vSecondDate - .vFirstDate) ))

WRITE 'Correct time returned:', .vElapsedTime

WRITE ' '

WRITE 'Elapsed time =', .vElapsedDays, 'day(s) and', .vElapsedTime, 'hh:mm:ss'

RETURN





From: [email protected] 
Sent: Wednesday, October 17, 2012 7:01 PM
To: RBASE-L Mailing List 
Subject: [RBASE-L] - Re: Datetime Tutorial

Here is my successful test of this.  Plus I am able to load these datetime
variables into my table so I know this will all work.

My test program:

SET VAR vKeepTime = (CVAL("time format"))

SET TIME FORMAT HH:MM

SET VAR vDateTime1 DATETIME = (DATETIME( "10/16/2012", .#time))
SET VAR vDateTime2 DATETIME = .#NOW

SET VAR vSeconds INTEGER = (.vDateTime2 - .vDateTime1)
SET VAR vMinutes DOUBLE = (.vSeconds / 60)
SET VAR vHours   DOUBLE = (.vMinutes / 60)

SHOW VAR

SET TIME FORMAT &vKeepTime


Here's the resulting variable list:
vDateTime1         = 10/16/12 12:58                           DATETIME
vDateTime2         = 10/17/12 12:58                           DATETIME
vSeconds           = 86390                                    INTEGER 
vMinutes           = 1439.83333333333                         DOUBLE  
vHours             = 23.9972222222222                         DOUBLE  


Thanks for the interesting discussion!

Karen

Reply via email to