Preserve tz when converting to jsonb timestamptz #7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The JSONB jbvDatetime type has a field for offset, and displays the time in that offset. For example, when the time zone GUC is set to America/New_York, the jsonpath
timestamp_tz()
method returns a value that displays a parsed value with its offset, not the local offset:This was not true for values parsed by
timestamp_tz()
that lacked an offset. It correctly assumes the local time zone, but displays it in UTC:To fix this inconsistent behavior, determine the offset for values being cast from
DATEOID
andDATEOID
types tojpiTimestampTz
and store it in the resulting jbvDatetime value. With this change, the result now preserves the offset just as it does when converting from offset-aware values:Author: David Wheeler
Reviewed-by: Junwang Zhao
Discussion: https://postgr.es/m/7DE080CE-6D8C-4794-9BD1-7D9699172FAB%40justatheory.com