Timestamps in Firebird have a 100 microsecond resolution, however the built-in DATEADD takes only integer values this makes it impossible to modify the 100 microsecond value of a TIMESTAMP.
SELECT CAST(DATEADD(-1 * EXTRACT(MILLISECOND FROM ts) MILLISECOND TO ts) AS VARCHAR(30)), EXTRACT(MILLISECOND FROM ts)
SELECT TIMESTAMP'2014-06-09 13:50:17.4971' as ts
2014-06-09 13:50:17.0001 497.1
I would expect (or prefer) output: