I found above example format may mess up in different mail client, I post a 
picture here[1].

Best,
Leonard

[1] 
https://github.com/leonardBang/flink-sql-etl/blob/master/etl-job/src/main/resources/pictures/CURRRENT_TIMESTAMP.png
 
<https://github.com/leonardBang/flink-sql-etl/blob/master/etl-job/src/main/resources/pictures/CURRRENT_TIMESTAMP.png>
 

> 在 2021年1月19日,16:22,Leonard Xu <[email protected]> 写道:
> 
> Hi, all
> 
> I want to start the discussion about correcting time-related function 
> behavior in Flink SQL, this is a tricky topic but I think it’s time to 
> address it. 
> 
> Currently some temporal function behaviors are wired to users.
> 1.  When users use a PROCTIME() in SQL, the value of PROCTIME() has a 
> timezone offset with the wall-clock time in users' local time zone, users 
> need to add their local time zone offset manually to get expected local 
> timestamp(e.g: Users in Germany need to +1h to get expected local timestamp). 
> 
> 2. Users can not use CURRENT_DATE/CURRENT_TIME/CURRENT_TIMESTAMP  to get 
> wall-clock timestamp in local time zone, and thus they need write UDF in 
> their SQL just for implementing a simple filter like WHERE date_col =  
> CURRENT_DATE. 
> 
> 3. Another common case  is the time window  with day interval based on 
> PROCTIME(), user plan to put all data from one day into the same window, but 
> the window is assigned using timestamp in UTC+0 timezone rather than the 
> session timezone which leads to the window starts with an offset(e.g: Users 
> in China need to add -8h in their business sql start and then +8h when output 
> the result, the conversion like a magic for users). 
> 
> These problems come from that lots of time-related functions like PROCTIME(), 
> NOW(), CURRENT_DATE, CURRENT_TIME and CURRENT_TIMESTAMP are returning time 
> values based on UTC+0 time zone.
> 
> This topic will lead to a comparison of the three types, i.e. 
> TIMESTAMP/TIMESTAMP WITHOUT TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE and 
> TIMESTAMP WITH TIME ZONE. In order to better understand the three types, I 
> wrote a document[1] to help understand them better. You can also know the 
> tree timestamp types behavior in Hadoop ecosystem from the reference link int 
> the doc.
> 
> 
> I Invested all Flink time-related functions current behavior and compared 
> with other DB vendors like Pg,Presto, Hive, Spark, Snowflake,  I made an 
> excel [2] to organize them well, we can use it for the next discussion. 
> Please let me know if I missed something.
> From my investigation, I think we need to correct the behavior of function 
> NOW()/PROCTIME()/CURRENT_DATE/CURRENT_TIME/CURRENT_TIMESTAMP, to correct 
> them, we can change the function return type or function return value or 
> change return type and return value both. All of those way are valid because 
> SQL:2011 does not specify the function return type and every SQL engine 
> vendor has its own implementation. For example the CURRENT_TIMESTAMP function,
> 
> FLINK current behavior        existed problem other vendors' behavior 
> proposed change
> CURRENT_TIMESTAMP     CURRENT_TIMESTAMP
> TIMESTAMP(0) NOT NULL
> 
> #session timezone: UTC
> 2020-12-28T23:52:52
> 
> #session timezone: UTC+8
> 2020-12-28T23:52:52
> 
> wall clock:
> UTC+8: 2020-12-29 07:52:52    Wrong value:returns UTC timestamp, but user 
> expects current timestamp in session time zone      In MySQL, Spark, the 
> function NOW() and CURRENT_TIMESTAMP return current timestamp value in 
> session time zone,the return type is TIMESTAMP
> 
> In Pg, Presto, the function NOW() and LOCALTIMESTAMP return current timestamp 
> in session time zone,the return type is TIMESTAMP WITH TIME ZONE
> 
> In Snowflake, the function CURRENT_TIMESTAMP / LOCALTIMESTAMP return current 
> timestamp in session time zone,the return type is TIMESTAMP WITH LOCAL TIME 
> ZONE Flink should return current timestamp in session time zone, the return 
> type should be TIMESTAMP
> 
> 
> I tend to only change the return value for these problematic functions and 
> introduce an option for compatibility consideration, what do you think?
> 
> 
> Looking forward to your feedback.
> 
> Best,
> Leonard
> 
> [1] 
> https://docs.google.com/document/d/1iY3eatV8LBjmF0gWh2JYrQR0FlTadsSeuCsksOVp_iA/edit?usp=sharing
>  
> <https://docs.google.com/document/d/1iY3eatV8LBjmF0gWh2JYrQR0FlTadsSeuCsksOVp_iA/edit?usp=sharing>
>  
> [2] 
> https://docs.google.com/spreadsheets/d/1T178krh9xG-WbVpN7mRVJ8bzFnaSJx3l-eg1EWZe_X4/edit?usp=sharing
>  
> <https://docs.google.com/spreadsheets/d/1T178krh9xG-WbVpN7mRVJ8bzFnaSJx3l-eg1EWZe_X4/edit?usp=sharing>
>  

Reply via email to