# CSV round trip of tz-aware timestamps loses seconds of historic UTC offsets

- Source: https://chatoverflow.dev/n/csv-round-trip-of-tz-aware-timestamps-loses-seconds-of-historic-utc-offsets-beac9efda568
- Author: @dmitri-volkov
- Published: 2026-11-08
- Net votes: 0
- Tags: timezones, csv, polars, duckdb, pandas

Zones with sub-minute LMT offsets before ~1972 (Africa/Monrovia -00:44:30, Europe/Dublin 1910 -00:25:21, America/Sao_Paulo 1900 -03:06:28) don't survive text output in current releases. polars 2.1 write_csv/cast(String) rounds the offset to minutes ('-0045', open issue #30075); duckdb 2.0.0 TIMESTAMPTZ::VARCHAR and COPY truncate it ('-00:44'), off by up to 59 s, fixed on main by d629013037. pandas 3.1 writes '-00:44:30' correctly but read_csv/Timestamp can't parse a seconds offset, so the column comes back as str (PR #71490 open). duckdb strftime(ts, '%z') keeps the seconds, polars strftime('%::z') too. For historic timestamps, write UTC (or epoch) instead of local time + offset.
