[
https://issues.apache.org/jira/browse/FLINK-19757?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17218970#comment-17218970
]
xiaogang zhou edited comment on FLINK-19757 at 10/22/20, 12:06 PM:
-------------------------------------------------------------------
[~jark] the problem is if there is a proctime() is ddl, the generated code is
{code:java}
// code placeholder
result$19 = org.apache.flink.table.data.TimestampData.fromEpochMillis(
ctx.timerService().currentProcessingTime());
if (false) {
out.setNullAt(2);
} else {
out.setNonPrimitiveValue(2, result$19);
}
{code}
but I need the TimestampData in my timezone.
this is the problem i think need to be fixed :)
was (Author: zhoujira86):
the problem is if there is a proctime() is ddl, the generated code is
{code:java}
// code placeholder
result$19 = org.apache.flink.table.data.TimestampData.fromEpochMillis(
ctx.timerService().currentProcessingTime());
if (false) {
out.setNullAt(2);
} else {
out.setNonPrimitiveValue(2, result$19);
}
{code}
but I need the TimestampData in my timezone.
this is the problem i think need to be fixed :)
> TimeStampData can cause time inconsistent problem
> -------------------------------------------------
>
> Key: FLINK-19757
> URL: https://issues.apache.org/jira/browse/FLINK-19757
> Project: Flink
> Issue Type: Improvement
> Components: Table SQL / Runtime
> Affects Versions: 1.11.1
> Reporter: xiaogang zhou
> Priority: Major
> Labels: pull-request-available
>
> when we check jdk LocalDateTime code,we find that
>
> {code:java}
> // code placeholder
> public static LocalDateTime ofEpochSecond(long epochSecond, int nanoOfSecond,
> ZoneOffset offset) {
> Objects.requireNonNull(offset, "offset");
> NANO_OF_SECOND.checkValidValue(nanoOfSecond);
> long localSecond = epochSecond + offset.getTotalSeconds(); // overflow
> caught later
> long localEpochDay = Math.floorDiv(localSecond, SECONDS_PER_DAY);
> int secsOfDay = (int)Math.floorMod(localSecond, SECONDS_PER_DAY);
> LocalDate date = LocalDate.ofEpochDay(localEpochDay);
> LocalTime time = LocalTime.ofNanoOfDay(secsOfDay * NANOS_PER_SECOND +
> nanoOfSecond);
> return new LocalDateTime(date, time);
> }
> {code}
>
> offset.getTotalSeconds() they add the offset, but in the TimeStampData
> toLocalDateTime, we don't add a offset.
>
> I'd like to add a TimeZone.getDefault().getRawOffset() in the
> toLocalDateTime()
> and minus a TimeZone.getDefault().getRawOffset() in the
> fromLocalDateTime
--
This message was sent by Atlassian Jira
(v8.3.4#803005)