diff --git a/agents/drivers/tdengine/src/main/java/com/dbx/agent/tdengine/TDengineAgent.java b/agents/drivers/tdengine/src/main/java/com/dbx/agent/tdengine/TDengineAgent.java index fd8ee6961..102c6fa08 100644 --- a/agents/drivers/tdengine/src/main/java/com/dbx/agent/tdengine/TDengineAgent.java +++ b/agents/drivers/tdengine/src/main/java/com/dbx/agent/tdengine/TDengineAgent.java @@ -28,6 +28,8 @@ import java.sql.SQLException; import java.sql.Timestamp; import java.sql.Types; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; +import java.time.temporal.ChronoField; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; @@ -47,7 +49,10 @@ import java.util.regex.Pattern; public final class TDengineAgent extends BaseDatabaseAgent { private static final DateTimeFormatter TDENGINE_TIMESTAMP_FORMAT = - DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); + new DateTimeFormatterBuilder() + .appendPattern("yyyy-MM-dd HH:mm:ss") + .appendFraction(ChronoField.NANO_OF_SECOND, 3, 9, true) + .toFormatter(); private static final Pattern NUMERIC_PRECISION_PATTERN = Pattern.compile("(?i)^(decimal|numeric)\\((\\d+)(?:,\\s*\\d+)?\\)"); private static final Pattern NUMERIC_SCALE_PATTERN = diff --git a/agents/drivers/tdengine/src/test/java/com/dbx/agent/tdengine/TDengineAgentTest.java b/agents/drivers/tdengine/src/test/java/com/dbx/agent/tdengine/TDengineAgentTest.java index 31e750118..df770f666 100644 --- a/agents/drivers/tdengine/src/test/java/com/dbx/agent/tdengine/TDengineAgentTest.java +++ b/agents/drivers/tdengine/src/test/java/com/dbx/agent/tdengine/TDengineAgentTest.java @@ -322,6 +322,18 @@ class TDengineAgentMetadataTest { "2026-05-16 09:35:58.123", TDengineAgent.decodeTdengineValue(Timestamp.valueOf("2026-05-16 09:35:58.123")) ); + Assertions.assertEquals( + "2026-05-16 09:35:58.000", + TDengineAgent.decodeTdengineValue(Timestamp.valueOf("2026-05-16 09:35:58")) + ); + Assertions.assertEquals( + "2026-05-16 09:35:58.123456", + TDengineAgent.decodeTdengineValue(Timestamp.valueOf("2026-05-16 09:35:58.123456")) + ); + Assertions.assertEquals( + "2026-05-16 09:35:58.123456789", + TDengineAgent.decodeTdengineValue(Timestamp.valueOf("2026-05-16 09:35:58.123456789")) + ); } @Test