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