>>Create cursor test (myTime t) >>For ix=0 to 23 >> Insert into test values (Datetime(2000,1,1,m.ix)) >> ltCheck = Ctot('^2000/1/1 '+Padl(m.ix,2,'0')) >> If (m.ltCheck - test.myTime <> 0) >> ? 'Mismatch',m.ix >> endif >>EndFor >>>
ltCheck=Datetime(2000,1,1,m.ix)>i.e. having the check variable assigned the same value as the one inserted into the cursor, gives me 0.0010058283810 seconds difference each time, on certain values of ix. Which is really weird. One would expect that the datetime() function would yield a round number of seconds, but it doesn't:
t=datetime() >insert into test values (t) >?(t-mytime)*1.00000000000000 && displays zero >t=ctot(ttoc(t)) && this should force it to discard milliseconds if it had them >?(t-mytime)*1.00000000000000 && displays 0.0010058283810 again>
CLEAR mm = 0 ss = 15 create cursor test (myTime t) FOR hh=0 TO 23 varTime = Datetime(2000,1,1,m.hh,m.mm,m.ss) Insert into test values (m.varTime) tDiff = NULL ? "H M S",m.hh,m.mm,m.ss FOR k=1 TO 10 IF test.myTime - m.varTime = m.tDiff EXIT ENDIF tDiff = test.myTime - m.varTime If m.tDiff <> 0 ? "difference", m.tDiff*1.0000000 ENDIF ZZ=test.myTimE && convert to float variable format REPLACE myTime WITH M.ZZ && reconvert to field format ENDFOR NEXT