資料的時間有存放到小數點, 例如:2019-06-20 17:57:20.55247. 在使用 java.sql.Timestamp 轉換時會變成 2019-06-20 17:57:20.552, 如果把此資料當作 offset 存起來, 下次在使用以下的 SQL 查詢資料時就會一直重複的把 2019-06-20 17:57:20.55247 查出來, 因為 .55247 會一直大於 .552:
SELECT * FROM flight_stat_dup WHERE create_date > '2019-06-20 17:57:20.552' and create_date < '2019-07-02 06:03:29.609514' ORDER BY create_date
0.6.0 PR Link URL: https://github.com/oharastream/ohara/pull/1722
0.7.0 PR Link URL: https://github.com/oharastream/ohara/pull/1754
@jackyoh 你可能有點誤會root cause了
java.sql.Timestmp可以存到nano second,不過它是放在獨立的欄位,因此當你的時間刻度超過millisecond後,你就不可以只存getTime的數字因為該返回值只到millisecond(目前的cache只有存到millisecond)
private[source] def dbTimestampColumnValue(dbColumnInfo: Seq[ColumnInfo[_]], timestampColumnName: String): Long =
dbColumnInfo
.find(_.columnName == timestampColumnName)
.map(_.value.asInstanceOf[Timestamp].getTime)
.getOrElse(
throw new RuntimeException(s"$timestampColumnName not in ${jdbcSourceConnectorConfig.dbTableName} table."))
一個簡單的辦法是改成存字串,也就是完整的" yyyy-mm-dd hh:mm:ss.[fff...]"
@jackyoh 身為RM 你要考量一下bug的嚴重程度 並且思考是否要放進0.6
這個 bug 會一起放在 0.6.0 修改, 用字串存應改就不會有問題了. 我嘗試來修改看看
@jackyoh 可以ping回報此議題的人 讓他們可以方便追蹤相關進度
OK, 我來 ping
ping @g1geordie @mathsigit @alan791205 @DawnJheng FYI
OK, 我來 ping
ping @g1geordie @mathsigit @alan791205 FYI
and @DawnJheng
@DawnJheng 我已經 update 了
我已經 update 了
如果我印象沒錯的話 透過edit的方式增加人名github不會寄出通知
很像是, 那我再 ping 一次. ping @DawnJheng FYI
麻煩把兩個版本的PR連結放在description
OK, 已經將 PR Link 加在 describe 了
這個問題已經使用字串存放 offset 解了, 我先把此 issue 關閉.