Skip to content

CAST Timestamp -> String doesn't properly handle timezones with sub-minute offsets  #19792

@damccorm

Description

@damccorm

One of the timestamp -> string test cases is -62135596800000000 microseconds from the unix epoch, or 01/01/0001 00:00:00 GMT

Technically the timezone offset at this time in America/Los_Angeles is -07:52:58. This causes the following error:

Expected: ARRAY<STRUCT<ColA STRING>>[{"0000-12-31 16:08:00-07:52"}]
Actual: ARRAY<STRUCT<ColA STRING>>[{"0000-12-31 16:07:02-07:52"}]

Note that ZetaSQL expects us to completely truncate the second part of the offset. It's not used when subtracting from the origin datetime, and it's not included in the offset string. However when we perform this conversion, joda time uses the second part of the offset, and thus our time string is off by 58 seconds.

Imported from Jira BEAM-8073. Original Jira may contain additional context.
Reported by: amaliujia.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions