date/time are stored as doubles (excel, access,, any database) - the bit before the decimal point is the number of days since 31/12/1899 - so today is 44063 and the time is the number of seconds so far divided by 86400 (the number of seconds in the day - so now is 44063.9146990741. What you see as a date is just a format.
if you go over 24 hours the the day part increments by 1 and the time part starts incrementing from 0 in seconds.
This is why it matters what the underlying value actually is - so you are saying the user enters a value 774:34 which is text.
think you need a function to convert to datetime
Code:
Function convertToTime(strTime As String) As Date
convertToTime = ((Split(strTime, ":")(0) * 60) + Split(strTime, ":")(1)) * 60 / 86400
End Function
suggest you use this after the user has entered the time to store this value insteadas well
744.34 converts to a date of 30th January 1900 00:34:00
Since you are only interested in the time difference, it doesn't matter what the date is.
so now you have this time value stored in a field in you table. Let's call the field truTime
And your query would be something like this. There are other ways but lets see if this works first
Code:
SELECT truTime, dMax("truTime","myTable","truTime<#" format(truTime,"mm/dd/yyyy hh:mm:ss") & "#") AS prevTime
FROM myTable
ORDER BY truTime