[ 
https://issues.apache.org/jira/browse/HIVE-14412?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16000251#comment-16000251
 ] 

Carter Shanklin commented on HIVE-14412:
----------------------------------------

I tried the patch and had a few comments, 1 relates to semantics and 2 relate 
to usability.

Semantics:
SQL has a notion of session default time zone displacement which is used in 
various conversions. I was not able to find any way to control this in Hive, I 
tried changing my system time zone but this didn't have any effect. It appeared 
Hive behaves as if the session time zone is GMT.

This becomes a problem when you convert from dates or timestamps without 
timezones into timestamps with timezones, per the SQL standard the session zone 
displacement is supposed to be taken into account. A date recorded as timestamp 
with time zone in London needs to occur earlier in time than that same date 
converted in California. I don't see any way to do that currently, did I miss 
it?

Ideally you should be able to use the standard approaches:
set time zone '-0:00';
set time zone '-8:00';
set time zone LOCAL;

And maybe extensions like:
set time zone 'GMT'; etc.

At a minimum you should be able to control it somehow, for example through 
system time zone.

For usability:

1. These SQL standard formats are not accepted:
select cast('2012-01-01 00:00:00' as timestamp with time zone);
select cast('2012-01-01 00:00:00 -6:00' as timestamp with time zone);
These both return NULL.

2. The input is extremely strict:
These common inputs also return NULL.
select cast('2012-01-01' as timestamp with time zone);
select cast('2012-01-01 00:00:00 PST' as timestamp with time zone);
select cast('2012-01-01 00:00:00Z' as timestamp with time zone);

Even with the format recognized, things remain very strict:
select cast('2012-01-01 00:00:00 GMT-06:00' as timestamp with time zone); <- 
works
select cast('2012-01-01 00:00:00 GMT-6:00' as timestamp with time zone); <- 
returns null

The other big usability issue is there is no way to convert to a target time 
zone. SQL allows for things like select tswtz at time zone '-08:00' to convert 
to a known time zone. It's important but could probably be handled as a follow 
up.

> Add a timezone-aware timestamp
> ------------------------------
>
>                 Key: HIVE-14412
>                 URL: https://issues.apache.org/jira/browse/HIVE-14412
>             Project: Hive
>          Issue Type: Sub-task
>          Components: Hive
>            Reporter: Rui Li
>            Assignee: Rui Li
>         Attachments: HIVE-14412.10.patch, HIVE-14412.11.patch, 
> HIVE-14412.1.patch, HIVE-14412.2.patch, HIVE-14412.3.patch, 
> HIVE-14412.4.patch, HIVE-14412.5.patch, HIVE-14412.6.patch, 
> HIVE-14412.7.patch, HIVE-14412.8.patch, HIVE-14412.9.patch
>
>
> Java's Timestamp stores the time elapsed since the epoch. While it's by 
> itself unambiguous, ambiguity comes when we parse a string into timestamp, or 
> convert a timestamp to string, causing problems like HIVE-14305.
> To solve the issue, I think we should make timestamp aware of timezone.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to