diff --git a/packages/fcl-db/src/sqldb/interbase/ibconnection.pp b/packages/fcl-db/src/sqldb/interbase/ibconnection.pp index 077e943f0c..e6cfcb3830 100644 --- a/packages/fcl-db/src/sqldb/interbase/ibconnection.pp +++ b/packages/fcl-db/src/sqldb/interbase/ibconnection.pp @@ -1442,6 +1442,13 @@ begin {$ELSE} PISC_TIMESTAMP(CurrBuff)^.timestamp_date := Trunc(PTime) + IBDateOffset; PISC_TIMESTAMP(CurrBuff)^.timestamp_time := Round(abs(Frac(PTime)) * IBTimeFractionsPerDay); + if PISC_TIMESTAMP(CurrBuff)^.timestamp_time = IBTimeFractionsPerDay then + begin + // If PTime is for example 0.99999999999999667, the time-portion of the + // TDateTime is rounded into a whole day. Firebird does not accept that. + inc(PISC_TIMESTAMP(CurrBuff)^.timestamp_date); + PISC_TIMESTAMP(CurrBuff)^.timestamp_time := 0; + end; {$ENDIF} end else