In theory, Oracle is able to store timestamps down to the microsecond.
In practice it rounds off to the nearest second if you try to touch it in any way, or even look at it slightly funny. So much so that the microseconds are practically unusable.
TIMESTAMP WITH TIME ZONE when I tried to do some date arithmetic on an ETL job to load into Postgres.
Eventually I gave up, and fetched it back into Python and did the arithmetic there before sending it on.
It may have been that there is an obvious answer which I simply failed to find due to the fact that I hadn't used Oracle in a decade. But I went down a number of dead ends before coming up with an approach that worked. (And the person before me had simply not noticed the problem...)
In practice it rounds off to the nearest second if you try to touch it in any way, or even look at it slightly funny. So much so that the microseconds are practically unusable.