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.

Attachment: publickey - [email protected] - 0x0A7793AD.asc
Description: application/pgp-keys

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to