1
0
mcy 6 жил өмнө
parent
commit
f21abc13af

+ 4 - 3
client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/JdbcTypeUtil.java

@@ -5,6 +5,7 @@ import java.math.BigInteger;
 import java.sql.*;
 import java.sql.*;
 
 
 import org.joda.time.DateTime;
 import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 
 
@@ -116,7 +117,7 @@ public class JdbcTypeUtil {
                 case Types.DATE:
                 case Types.DATE:
                     if (!value.startsWith("0000-00-00")) {
                     if (!value.startsWith("0000-00-00")) {
                         value = value.trim().replace(" ", "T");
                         value = value.trim().replace(" ", "T");
-                        DateTime dt = new DateTime(value);
+                        DateTime dt = new DateTime(value, DateTimeZone.forID("+08:00"));
                         res = new Date(dt.toDate().getTime());
                         res = new Date(dt.toDate().getTime());
                     } else {
                     } else {
                         res = null;
                         res = null;
@@ -124,13 +125,13 @@ public class JdbcTypeUtil {
                     break;
                     break;
                 case Types.TIME:
                 case Types.TIME:
                     value = "T" + value;
                     value = "T" + value;
-                    DateTime dt = new DateTime(value);
+                    DateTime dt = new DateTime(value, DateTimeZone.forID("+08:00"));
                     res = new Time(dt.toDate().getTime());
                     res = new Time(dt.toDate().getTime());
                     break;
                     break;
                 case Types.TIMESTAMP:
                 case Types.TIMESTAMP:
                     if (!value.startsWith("0000-00-00")) {
                     if (!value.startsWith("0000-00-00")) {
                         value = value.trim().replace(" ", "T");
                         value = value.trim().replace(" ", "T");
-                        dt = new DateTime(value);
+                        dt = new DateTime(value, DateTimeZone.forID("+08:00"));
                         res = new Timestamp(dt.toDate().getTime());
                         res = new Timestamp(dt.toDate().getTime());
                     } else {
                     } else {
                         res = null;
                         res = null;

+ 9 - 8
client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/support/ESSyncUtil.java

@@ -12,6 +12,7 @@ import javax.sql.DataSource;
 
 
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.binary.Base64;
 import org.joda.time.DateTime;
 import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 
 
@@ -103,14 +104,14 @@ public class ESSyncUtil {
             }
             }
         } else if ("date".equals(esType)) {
         } else if ("date".equals(esType)) {
             if (val instanceof java.sql.Time) {
             if (val instanceof java.sql.Time) {
-                DateTime dateTime = new DateTime(((java.sql.Time) val).getTime());
+                DateTime dateTime = new DateTime(((java.sql.Time) val).getTime(), DateTimeZone.forID("+08:00"));
                 if (dateTime.getMillisOfSecond() != 0) {
                 if (dateTime.getMillisOfSecond() != 0) {
                     res = dateTime.toString("HH:mm:ss.SSS");
                     res = dateTime.toString("HH:mm:ss.SSS");
                 } else {
                 } else {
                     res = dateTime.toString("HH:mm:ss");
                     res = dateTime.toString("HH:mm:ss");
                 }
                 }
             } else if (val instanceof java.sql.Timestamp) {
             } else if (val instanceof java.sql.Timestamp) {
-                DateTime dateTime = new DateTime(((java.sql.Timestamp) val).getTime());
+                DateTime dateTime = new DateTime(((java.sql.Timestamp) val).getTime(), DateTimeZone.forID("+08:00"));
                 if (dateTime.getMillisOfSecond() != 0) {
                 if (dateTime.getMillisOfSecond() != 0) {
                     res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
                     res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
                 } else {
                 } else {
@@ -119,9 +120,9 @@ public class ESSyncUtil {
             } else if (val instanceof java.sql.Date || val instanceof Date) {
             } else if (val instanceof java.sql.Date || val instanceof Date) {
                 DateTime dateTime;
                 DateTime dateTime;
                 if (val instanceof java.sql.Date) {
                 if (val instanceof java.sql.Date) {
-                    dateTime = new DateTime(((java.sql.Date) val).getTime());
+                    dateTime = new DateTime(((java.sql.Date) val).getTime(), DateTimeZone.forID("+08:00"));
                 } else {
                 } else {
-                    dateTime = new DateTime(((Date) val).getTime());
+                    dateTime = new DateTime(((Date) val).getTime(), DateTimeZone.forID("+08:00"));
                 }
                 }
                 if (dateTime.getHourOfDay() == 0 && dateTime.getMinuteOfHour() == 0 && dateTime.getSecondOfMinute() == 0
                 if (dateTime.getHourOfDay() == 0 && dateTime.getMinuteOfHour() == 0 && dateTime.getSecondOfMinute() == 0
                     && dateTime.getMillisOfSecond() == 0) {
                     && dateTime.getMillisOfSecond() == 0) {
@@ -134,7 +135,7 @@ public class ESSyncUtil {
                     }
                     }
                 }
                 }
             } else if (val instanceof Long) {
             } else if (val instanceof Long) {
-                DateTime dateTime = new DateTime(((Long) val).longValue());
+                DateTime dateTime = new DateTime(((Long) val).longValue(), DateTimeZone.forID("+08:00"));
                 if (dateTime.getHourOfDay() == 0 && dateTime.getMinuteOfHour() == 0 && dateTime.getSecondOfMinute() == 0
                 if (dateTime.getHourOfDay() == 0 && dateTime.getMinuteOfHour() == 0 && dateTime.getSecondOfMinute() == 0
                     && dateTime.getMillisOfSecond() == 0) {
                     && dateTime.getMillisOfSecond() == 0) {
                     res = dateTime.toString("yyyy-MM-dd");
                     res = dateTime.toString("yyyy-MM-dd");
@@ -148,14 +149,14 @@ public class ESSyncUtil {
                 if (v.length() > 18 && v.charAt(4) == '-' && v.charAt(7) == '-' && v.charAt(10) == ' '
                 if (v.length() > 18 && v.charAt(4) == '-' && v.charAt(7) == '-' && v.charAt(10) == ' '
                     && v.charAt(13) == ':' && v.charAt(16) == ':') {
                     && v.charAt(13) == ':' && v.charAt(16) == ':') {
                     String dt = v.substring(0, 10) + "T" + v.substring(11);
                     String dt = v.substring(0, 10) + "T" + v.substring(11);
-                    DateTime dateTime = new DateTime(dt);
+                    DateTime dateTime = new DateTime(dt, DateTimeZone.forID("+08:00"));
                     if (dateTime.getMillisOfSecond() != 0) {
                     if (dateTime.getMillisOfSecond() != 0) {
                         res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
                         res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
                     } else {
                     } else {
                         res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss+08:00");
                         res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss+08:00");
                     }
                     }
                 } else if (v.length() == 10 && v.charAt(4) == '-' && v.charAt(7) == '-') {
                 } else if (v.length() == 10 && v.charAt(4) == '-' && v.charAt(7) == '-') {
-                    DateTime dateTime = new DateTime(v);
+                    DateTime dateTime = new DateTime(v, DateTimeZone.forID("+08:00"));
                     res = dateTime.toString("yyyy-MM-dd");
                     res = dateTime.toString("yyyy-MM-dd");
                 }
                 }
             }
             }
@@ -237,7 +238,7 @@ public class ESSyncUtil {
 
 
     /**
     /**
      * 拼接主键条件
      * 拼接主键条件
-     * 
+     *
      * @param mapping
      * @param mapping
      * @param data
      * @param data
      * @return
      * @return

+ 4 - 3
client-adapter/hbase/src/main/java/com/alibaba/otter/canal/client/adapter/hbase/support/PhTypeUtil.java

@@ -11,6 +11,7 @@ import org.apache.hadoop.hbase.util.Bytes;
 import org.joda.time.DateTime;
 import org.joda.time.DateTime;
 
 
 import com.google.common.math.LongMath;
 import com.google.common.math.LongMath;
+import org.joda.time.DateTimeZone;
 
 
 /**
 /**
  * Phoenix类型转换工具类
  * Phoenix类型转换工具类
@@ -608,12 +609,12 @@ public class PhTypeUtil {
         Date date = null;
         Date date = null;
         int len = dateStr.length();
         int len = dateStr.length();
         if (len == 10 && dateStr.charAt(4) == '-' && dateStr.charAt(7) == '-') {
         if (len == 10 && dateStr.charAt(4) == '-' && dateStr.charAt(7) == '-') {
-            date = new DateTime(dateStr).toDate();
+            date = new DateTime(dateStr, DateTimeZone.forID("+08:00")).toDate();
         } else if (len == 8 && dateStr.charAt(2) == ':' && dateStr.charAt(5) == ':') {
         } else if (len == 8 && dateStr.charAt(2) == ':' && dateStr.charAt(5) == ':') {
-            date = new DateTime("T" + dateStr).toDate();
+            date = new DateTime("T" + dateStr, DateTimeZone.forID("+08:00")).toDate();
         } else if (len >= 19 && dateStr.charAt(4) == '-' && dateStr.charAt(7) == '-' && dateStr.charAt(13) == ':'
         } else if (len >= 19 && dateStr.charAt(4) == '-' && dateStr.charAt(7) == '-' && dateStr.charAt(13) == ':'
                    && dateStr.charAt(16) == ':') {
                    && dateStr.charAt(16) == ':') {
-            date = new DateTime(dateStr.replace(" ", "T")).toDate();
+            date = new DateTime(dateStr.replace(" ", "T"), DateTimeZone.forID("+08:00")).toDate();
         }
         }
         return date;
         return date;
     }
     }

+ 5 - 4
client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java

@@ -13,6 +13,7 @@ import org.apache.commons.lang.StringUtils;
 import org.joda.time.DateTime;
 import org.joda.time.DateTime;
 
 
 import com.alibaba.otter.canal.client.adapter.rdb.config.MappingConfig;
 import com.alibaba.otter.canal.client.adapter.rdb.config.MappingConfig;
+import org.joda.time.DateTimeZone;
 
 
 public class SyncUtil {
 public class SyncUtil {
 
 
@@ -86,7 +87,7 @@ public class SyncUtil {
                 }
                 }
                 break;
                 break;
             case Types.TINYINT:
             case Types.TINYINT:
-                 if (value instanceof Number) {
+                if (value instanceof Number) {
                     pstmt.setByte(i, ((Number) value).byteValue());
                     pstmt.setByte(i, ((Number) value).byteValue());
                 } else if (value instanceof String) {
                 } else if (value instanceof String) {
                     pstmt.setByte(i, Byte.parseByte((String) value));
                     pstmt.setByte(i, Byte.parseByte((String) value));
@@ -197,7 +198,7 @@ public class SyncUtil {
                     String v = (String) value;
                     String v = (String) value;
                     if (!v.startsWith("0000-00-00")) {
                     if (!v.startsWith("0000-00-00")) {
                         v = v.trim().replace(" ", "T");
                         v = v.trim().replace(" ", "T");
-                        DateTime dt = new DateTime(v);
+                        DateTime dt = new DateTime(v, DateTimeZone.forID("+08:00"));
                         pstmt.setDate(i, new Date(dt.toDate().getTime()));
                         pstmt.setDate(i, new Date(dt.toDate().getTime()));
                     } else {
                     } else {
                         pstmt.setNull(i, type);
                         pstmt.setNull(i, type);
@@ -214,7 +215,7 @@ public class SyncUtil {
                 } else if (value instanceof String) {
                 } else if (value instanceof String) {
                     String v = (String) value;
                     String v = (String) value;
                     v = "T" + v;
                     v = "T" + v;
-                    DateTime dt = new DateTime(v);
+                    DateTime dt = new DateTime(v, DateTimeZone.forID("+08:00"));
                     pstmt.setTime(i, new Time(dt.toDate().getTime()));
                     pstmt.setTime(i, new Time(dt.toDate().getTime()));
                 } else {
                 } else {
                     pstmt.setNull(i, type);
                     pstmt.setNull(i, type);
@@ -229,7 +230,7 @@ public class SyncUtil {
                     String v = (String) value;
                     String v = (String) value;
                     if (!v.startsWith("0000-00-00")) {
                     if (!v.startsWith("0000-00-00")) {
                         v = v.trim().replace(" ", "T");
                         v = v.trim().replace(" ", "T");
-                        DateTime dt = new DateTime(v);
+                        DateTime dt = new DateTime(v, DateTimeZone.forID("+08:00"));
                         pstmt.setTimestamp(i, new Timestamp(dt.toDate().getTime()));
                         pstmt.setTimestamp(i, new Timestamp(dt.toDate().getTime()));
                     } else {
                     } else {
                         pstmt.setNull(i, type);
                         pstmt.setNull(i, type);