I did migrating of a large project to ZeosLib 8 from version 7. It is faster, there are new possibilities. However, I will focus on the faults. In version 8 there are fundamental problems in the interval type support, which can make your hair grey. Here are some of my observations and my few tips on how to get out of this until it will be patched
I am using Postgres 14. ZeosLib 7.x interpreted the interval fields correctly and returned a string, which is what the Postgres Development Group recommended.
In version 8 everything is broken and unfortunately random data are returned, which can even cause your application to crash. Try entering a value like 170:44:12 into the database and see what happens. I recommend the try except block, as you may raise a critical exception (in version 7.x the same code works fine). However, if you already successfully execute ZQuery (the errors are in addition random) you will see…. additional milliseconds in DBGrid, no matter what you have set in formatting.
Massacre...

Ok but how do you get out of this? You should do following steps:
1. You have to start by eliminating those nasty milliseconds. This is actually easy because there are undocumented properties of ZConnection. So in properties you need to set:
TimeReadFormat=HH:NN:SS
TimeWriteFormat=HH:NN:SS
This is not a mistake but another bug in ZEosLib 8.x - the correct formatting syntax [HH] does not work. Happily, the HH formatting also works with times exceeding 24h. Hurray milliseconds are gone!
2. Now it will be more difficult. Suppose you have a "timeiv" variable of type interval in table t.
In version 8, both normal references and function results are bad handled. In the second case it is worse because Zeos will additionally create faulty field definitions instead of RawStrings. Therefore the code should be corrected before ZeosLib automatically creates the fields in the source code. Even setting the properties DisableZFields will not help!
To get out of this you have to improve the SQL by adding CAST:
t.timeiv does not work correctly with ZeosLib 8.x
CAST(t.timeiv) AS character varying(255)) works fine
SUM(t.timeiv) causes a crash test of our application
CAST(SUM(t.timeiv) AS character varying(255)) works great.
3. For the reasons described above, only now (after steps 1 and 2) you can automatically create the fields definitions. In ZeosLib, as I mentioned before, it doesn't matter if you create fields of new or old type. Without the above fixes you can expect your application to work randomly with interval fields.
4. What about the ZQuery that have to write to the database? CAST obviously doesn't work here (because the fields will be read-only). Therefore, after automatic generation by Zeos, we need to change the definition of each field storing the interval value by setting the size to 255.
But if you do these fixes you should have a working application, resistant to changes in ZeosLIb

By the way, these particular bugs in ZeosLib are surprising and can give you a hard time. They gave me... They blew up my entire billing application, and it took an infinite amount of time to discover the problem. I only hope that my comments will be of useful to someone.