fix(tdengine): preserve timestamp precision

This commit is contained in:
t8y2 2026-07-27 18:19:38 +08:00
parent 7e024b8cef
commit fabdc1b75a
No known key found for this signature in database
2 changed files with 18 additions and 1 deletions

View File

@ -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 =

View File

@ -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