The problem with TZ is TZ in its core definition.
1) they always change: if you have not updated your TZ since 3 months they are probably inaccurate
2) your TZ definition maybe accurate but they may not have been applied for real in the concerned zone
3) you can have different local time for the same longitude
4) you can have different days on the same longitude ...
5) TZ are not versioned, if the TZ changed between 2 records you may have made, you have inaccurate intervals stored. We do NOT have an API to take TZ change over time in consideration.
6) CEST/DST is breaking the axiom that time is a growing monotonic function
References 8.5.3 TZ in postgresql man https://www.postgresql.org/docs/9.2/static/datatype-datetime...
Computerphile what's wrong with timezones https://www.youtube.com/watch?v=-5wpm-gesOY