I am not sure if this helps, but I have trouble trusting CURRENT, because of the internals- you cannot see when the db is updating the value of CURRENT. For instance, during execution of a stored procedure, returns the same value, no matter how much time has actually elapsed.
I would suggest that you might be better off doing your timing in your Java code, or barring that, if you have an engine running on the DB server that manages the connections, do it in there.
We're doing it in our C++ request handler, which seems to work pretty well. It really depends on what you're trying to measure: raw database speed, or the time from the beginning to the end of a txn, and whether you're trying to isolate the impacts of network traffic... at least for us.
Probably cuurent will give you coorect answers but it only gives you full seconds output. If this is the case you can change this behaviour by setting the configuration parameter OSTIME to 1 instead of 0 (default). Now IDS will not read the time out of shared memory but will do a system call.
Another more advanced solution is to create some stored procedures that will do the trick. Probably C is the best solution is the best idea. This is quite easy to find out. You can read more about this at the developers corner on the informaix part of the IBM website.