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

zhaojinchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new d1ac2de4d1d Support more e2e type in SQLValue and date format in 
DateTimeFormatterFactory (#35535)
d1ac2de4d1d is described below

commit d1ac2de4d1d61d78e06ef1abd08b4361c81e6bdb
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Tue May 27 16:27:29 2025 +0800

    Support more e2e type in SQLValue and date format in 
DateTimeFormatterFactory (#35535)
---
 .../util/datetime/DateTimeFormatterFactory.java    | 22 ++++++++++++++++++++++
 .../test/e2e/cases/value/SQLValue.java             | 13 +++++++++++++
 2 files changed, 35 insertions(+)

diff --git 
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/datetime/DateTimeFormatterFactory.java
 
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/datetime/DateTimeFormatterFactory.java
index 0b7f4c481a7..5f720a09ada 100644
--- 
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/datetime/DateTimeFormatterFactory.java
+++ 
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/datetime/DateTimeFormatterFactory.java
@@ -34,10 +34,14 @@ public final class DateTimeFormatterFactory {
     
     private static final DateTimeFormatter TIME = 
DateTimeFormatter.ofPattern("HH:mm:ss");
     
+    private static final DateTimeFormatter FULL_TIME = 
DateTimeFormatter.ofPattern("HH:mm:ss.SSSSSS");
+    
     private static final DateTimeFormatter SHORT_MILLIS = 
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
     
     private static final DateTimeFormatter LONG_MILLIS = 
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
     
+    private static final DateTimeFormatter FULL_MILLIS = 
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
+    
     /**
      * Get standard date time formatter.
      *
@@ -56,6 +60,15 @@ public final class DateTimeFormatterFactory {
         return DATE;
     }
     
+    /**
+     * Get full time formatter.
+     *
+     * @return full time formatter
+     */
+    public static DateTimeFormatter getFullTimeFormatter() {
+        return FULL_TIME;
+    }
+    
     /**
      * Get time formatter.
      *
@@ -82,4 +95,13 @@ public final class DateTimeFormatterFactory {
     public static DateTimeFormatter getLongMillisFormatter() {
         return LONG_MILLIS;
     }
+    
+    /**
+     * Get full millis date time formatter.
+     *
+     * @return full millis date time formatter
+     */
+    public static DateTimeFormatter getFullMillisFormatter() {
+        return FULL_MILLIS;
+    }
 }
diff --git 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/value/SQLValue.java
 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/value/SQLValue.java
index cc249c82398..5a115419caf 100644
--- 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/value/SQLValue.java
+++ 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/cases/value/SQLValue.java
@@ -94,15 +94,28 @@ public final class SQLValue {
             case "boolean":
                 return Boolean.parseBoolean(value);
             case "Date":
+            case "date":
                 return Date.valueOf(LocalDate.parse(value, 
DateTimeFormatterFactory.getDateFormatter()));
             case "datetime":
+                if (26 == value.length()) {
+                    return Date.valueOf(LocalDate.parse(value, 
DateTimeFormatterFactory.getFullMillisFormatter()));
+                }
                 if (10 == value.length()) {
                     return Date.valueOf(LocalDate.parse(value, 
DateTimeFormatterFactory.getDateFormatter()));
                 }
                 return Date.valueOf(LocalDate.parse(value, 
DateTimeFormatterFactory.getStandardFormatter()));
             case "time":
+                if (value.length() > 8) {
+                    return Time.valueOf(LocalTime.parse(value, 
DateTimeFormatterFactory.getFullTimeFormatter()));
+                }
                 return Time.valueOf(LocalTime.parse(value, 
DateTimeFormatterFactory.getTimeFormatter()));
             case "timestamp":
+                if (26 == value.length()) {
+                    return Timestamp.valueOf(LocalDateTime.parse(value, 
DateTimeFormatterFactory.getFullMillisFormatter()));
+                }
+                if (19 == value.length()) {
+                    return Timestamp.valueOf(LocalDateTime.parse(value, 
DateTimeFormatterFactory.getStandardFormatter()));
+                }
                 return Timestamp.valueOf(LocalDateTime.parse(value, 
DateTimeFormatterFactory.getShortMillisFormatter()));
             case "blob":
             case "longblob":

Reply via email to