This is an automated email from the ASF dual-hosted git repository.

wuchunfu pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git


The following commit(s) were added to refs/heads/dev by this push:
     new 28beb53  [fix][Connector] fix datetime/date string can't convert to 
timestamp/date (#1521)
28beb53 is described below

commit 28beb53195f4b9745ede72f62a1d4edd93622963
Author: TrickyZerg <[email protected]>
AuthorDate: Sun Mar 20 13:14:15 2022 +0800

    [fix][Connector] fix datetime/date string can't convert to timestamp/date 
(#1521)
---
 .../org/apache/seatunnel/spark/sink/Clickhouse.scala     | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git 
a/seatunnel-connectors/seatunnel-connectors-spark/seatunnel-connector-spark-clickhouse/src/main/scala/org/apache/seatunnel/spark/sink/Clickhouse.scala
 
b/seatunnel-connectors/seatunnel-connectors-spark/seatunnel-connector-spark-clickhouse/src/main/scala/org/apache/seatunnel/spark/sink/Clickhouse.scala
index cfac518..58da5b6 100644
--- 
a/seatunnel-connectors/seatunnel-connectors-spark/seatunnel-connector-spark-clickhouse/src/main/scala/org/apache/seatunnel/spark/sink/Clickhouse.scala
+++ 
b/seatunnel-connectors/seatunnel-connectors-spark/seatunnel-connector-spark-clickhouse/src/main/scala/org/apache/seatunnel/spark/sink/Clickhouse.scala
@@ -354,9 +354,21 @@ class Clickhouse extends SparkBatchSink {
       case "String" =>
         statement.setString(index + 1, item.getAs[String](fieldIndex))
       case "Date" =>
-        statement.setDate(index + 1, item.getAs[Date](fieldIndex))
+        val value = item.get(fieldIndex)
+        value match {
+          case date: Date =>
+            statement.setDate(index + 1, date)
+          case _ =>
+            statement.setDate(index + 1, Date.valueOf(value.toString))
+        }
       case "DateTime" | Clickhouse.datetime64Pattern(_) =>
-        statement.setTimestamp(index + 1, item.getAs[Timestamp](fieldIndex))
+        val value = item.get(fieldIndex)
+        value match {
+          case timestamp: Timestamp =>
+            statement.setTimestamp(index + 1, timestamp)
+          case _ =>
+            statement.setTimestamp(index + 1, 
Timestamp.valueOf(value.toString))
+        }
       case "Int8" | "UInt8" | "Int16" | "UInt16" | "Int32" =>
         statement.setInt(index + 1, item.getAs[Int](fieldIndex))
       case "UInt32" | "UInt64" | "Int64" =>

Reply via email to