Hey Adam! Yes, it is intentional. Quoting from the original reasoning in the discussion thread.
Systems like Trino and Oracle DB store the time zone information as an IANA time zone name, not as an "HOUR TO MINUTE" interval as specified by the ANSI SQL standard. This means the source system (or the arrow compatibility layer, such as ADBC) needs to cast time zone strings to the offset in minutes. In other words, the integer offset is calculated at the source, not at the consumer. This means that the consumer cannot render the original IANA time zone string, and needs to use something like "UTC-03:00" instead of "America/Sao_Paulo", for example. It's impossible for the consumer to lookup the IANA time zone with only the offset, as that is a one-to-many mapping, and so the type is lossy with respect to the original IANA time zone. There is an upside to this, which is reducing consumer complexity. It only needs to add an offset in minutes to the UTC date to get the original date in its time zone, without any access to the IANA time zone database nor performing complicated conversions, like reasoning about variable-offset time zones (e.g daylight savings). On Thursday, November 27th, 2025 at 23:33, Adam Lippai <[email protected]> wrote: > > > Is it intentional that this doesn’t cover named timezones (which often > account for daylight saving time)? > > I didn’t find it mentioned in the linked discussions or the PRs. > > Best regards, > Adam Lippai > > On Thu, Nov 27, 2025 at 13:19 Matt Topol [email protected] wrote: > > > +1 (binding) > > > > Thanks! > > > > On Thu, Nov 27, 2025, 1:10 PM Rok Mihevc [email protected] wrote: > > > > > +1 (binding) Thank you for the proposal. > > > > > > V čet., 27. nov. 2025, 18:58 je oseba Ruoxi Sun [email protected] > > > napisala: > > > > > > > +1 (binding) > > > > > > > > Regards, > > > > Rossi SUN > > > > > > > > On Thu, Nov 27, 2025 at 08:47 Ian Cook [email protected] wrote: > > > > > > > > > +1 (binding) > > > > > > > > > > On Thu, Nov 27, 2025 at 11:25 AM Dewey Dunnington < > > > > > [email protected]> wrote: > > > > > > > > > > > +1 (binding). Thank you! > > > > > > > > > > > > On Wed, Nov 26, 2025 at 9:58 AM Gang Wu [email protected] wrote: > > > > > > > > > > > > > +1 (binding) > > > > > > > > > > > > > > On Wed, Nov 26, 2025 at 11:41 PM Curt Hagenlocher < > > > > > > > [email protected]> > > > > > > > wrote: > > > > > > > > > > > > > > > +1 (binding) > > > > > > > > > > > > > > > > On Wed, Nov 26, 2025 at 7:38 AM Antoine Pitrou < > > > > > > > > [email protected] > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > +1 (binding). Thanks for doing this! > > > > > > > > > > > > > > > > > > Le 25/11/2025 à 10:55, serramatutu a écrit : > > > > > > > > > > > > > > > > > > > Hey everyone! > > > > > > > > > > > > > > > > > > > > We (me and @felipecrv) would like to propose a new > > > > > > > > > > canonical > > > > > > > > > > extension > > > > > > > > > > type: TimestampWithOffset. > > > > > > > > > > > > > > > > > > > > Previous discussion around this proposal can be found in > > > > > > > > > > the > > > > > > > > > > mailing > > > > > > > > > > list [1] and in the format PR [2]. > > > > > > > > > > The format documentation PR can be found at [2]. A copy of > > > > > > > > > > its > > > > > > > > > > text > > > > > > > > > > is > > > > > > > > > > attached at the end of this email. > > > > > > > > > > A Go implementation can be found at [3]. > > > > > > > > > > A Rust implementation can be found at [4]. > > > > > > > > > > > > > > > > > > > > The vote will be open for at least 72 hours (3 business > > > > > > > > > > days). > > > > > > > > > > > > > > > > > > > > [ ] +1 Accept this proposal > > > > > > > > > > [ ] +0 > > > > > > > > > > [ ] -1 Do not accept this proposal because... > > > > > > > > > > > > > > > > > > > > RELEVANT LINKS > > > > > > > > > > > > > > > > > > > > [1] Previous discussion. > > > > https://lists.apache.org/thread/yhbr3rj9l59yoxv92o2s6dqlop16sfnk > > > > > > > > > > > > [2] Format specification pull request. > > > > > > > > > > https://github.com/apache/arrow/pull/48002 > > > > > > > > > > [3] Golang implementation draft. > > > > > > > > > > https://github.com/apache/arrow-go/pull/558 > > > > > > > > > > [4] Rust implementation draft. > > > > > > > > > > https://github.com/apache/arrow-rs/pull/8743 > > > > > > > > > > > > > > > > > > > > FORMAT > > > > > > > > > > > > > > > > > > > > Timestamp With Offset > > > > > > > > > > ============= > > > > > > > > > > This type represents a timestamp column that stores > > > > > > > > > > potentially > > > > > > > > > > different timezone offsets per value. The timestamp is > > > > > > > > > > stored > > > > > > > > > > in > > > > > > > > > > UTC > > > > > > > > > > alongside the original timezone offset in minutes. > > > > > > > > > > This extension type is intended to be compatible with ANSI > > > > > > > > > > SQL's > > > > > > > > > > `TIMESTAMP WITH TIME ZONE`, which is supported by multiple > > > > > > > > > > database > > > > > > > > > > engines. > > > > > > > > > > > > > > > > > > > > * Extension name: `arrow.timestamp_with_offset`. > > > > > > > > > > > > > > > > > > > > * The storage type of the extension is a `Struct` with 2 > > > > > > > > > > fields, > > > > > > > > > > in > > > > > > > > > > order: > > > > > > > > > > > > > > > > > > > > * `timestamp`: a non-nullable `Timestamp(time_unit, "UTC")`, > > > > > > > > > > where `time_unit` is any Arrow `TimeUnit` (s, ms, us or > > > > > > > > > > ns). > > > > > > > > > > > > > > > > > > > > * `offset_minutes`: a non-nullable signed 16-bit > > > > > > > > > > integer > > > > > > > > > > (`Int16`) representing the offset in minutes from the UTC > > > > > > > > > > timezone. > > > > > > > > > > Negative offsets represent time zones west of UTC, while > > > > > > > > > > positive > > > > > > > > > > offsets > > > > > > > > > > represent east. Offsets range from -779 (-12:59) to +780 > > > > > > > > > > (+13:00). > > > > > > > > > > > > > > > > > > > > * Extension type parameters: > > > > > > > > > > > > > > > > > > > > This type does not have any parameters. > > > > > > > > > > > > > > > > > > > > * Description of the serialization: > > > > > > > > > > > > > > > > > > > > Extension metadata is an empty string. > > > > > > > > > > > > > > > > > > > > .. note:: > > > > > > > > > > > > > > > > > > > > It is also permissible for the `offset_minutes` > > > > > > > > > > field > > > > > > > > > > to > > > > > > > > > > be > > > > > > > > > > dictionary-encoded or run-end-encoded.
publickey - [email protected] - 0x0A7793AD.asc
Description: application/pgp-keys
signature.asc
Description: OpenPGP digital signature
