confused about `TO_TIMESTAMP` document description

Posted by Tony Wei on
URL: http://deprecated-apache-flink-user-mailing-list-archive.369.s1.nabble.com/confused-about-TO-TIMESTAMP-document-description-tp44352.html

Hi Expert,

this document [1] said `TO_TIMESTAMP` will use the session time zone to convert date time string into a timestamp.
If I understand correctly, when I set session time zone to `Asia/Shanghai` and query `SELECT TO_TIMESTAMP('1970-01-01 08:00:00');`,
the result should be epoch timestamp `0` (i.e. '1970-01-01 08:00:00 UTC+8').

TO_TIMESTAMP(string1[, string2])

Converts date time string string1 with format string2 (by default: 'yyyy-MM-dd HH:mm:ss') under the session time zone (specified by TableConfig) to a timestamp.

Only supported in blink planner.

However, I found that result is not same as I expected. I tested it by running the below query under the `Asia/Shanghai` timezone:

SELECT
    CAST(TO_TIMESTAMP(FROM_UNIXTIME(0)) AS BIGINT), 
    FROM_UNIXTIME(0), 
    TO_TIMESTAMP(FROM_UNIXTIME(0));

and I got the result like

  EXPR$0                    EXPR$1                    EXPR$2
    28800       1970-01-01 08:00:00          1970-01-01T08:00

The `FROM_UNIXTIME` did convert the epoch timestamp to string format based on session time zone, but `FROM_UNIXTIME` didn't.
Therefore, I got the `28800` when I cast timestamp into bigint. The result actually shift 8 hours.

I found this code snippet [2] might be related to `TO_TIMESTAMP` udf, and seems like it won't set use any timezone configuration, so maybe the document might be wrong.

Please correct me if I misunderstood something. Thank you.

best regards,

[1] https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/table/functions/systemFunctions.html#temporal-functions
[2] https://github.com/apache/flink/blob/master/flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/runtime/functions/SqlDateTimeUtils.java#L322:L377