diff --git a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractDriver.java b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractDriver.java index 21bf8e7a932b0515d77c8f124eae2d0a4596b3b6..c4785127fdbfaad3b67c2aa513bc874d7dd3fd9a 100644 --- a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractDriver.java +++ b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractDriver.java @@ -57,10 +57,8 @@ public abstract class AbstractDriver implements Driver { } protected void loadTaosConfig(Properties info) { - if ((info.getProperty(TSDBDriver.PROPERTY_KEY_HOST) == null || - info.getProperty(TSDBDriver.PROPERTY_KEY_HOST).isEmpty()) && ( - info.getProperty(TSDBDriver.PROPERTY_KEY_PORT) == null || - info.getProperty(TSDBDriver.PROPERTY_KEY_PORT).isEmpty())) { + if ((info.getProperty(TSDBDriver.PROPERTY_KEY_HOST) == null || info.getProperty(TSDBDriver.PROPERTY_KEY_HOST).isEmpty()) && ( + info.getProperty(TSDBDriver.PROPERTY_KEY_PORT) == null || info.getProperty(TSDBDriver.PROPERTY_KEY_PORT).isEmpty())) { File cfgDir = loadConfigDir(info.getProperty(TSDBDriver.PROPERTY_KEY_CONFIG_DIR)); File cfgFile = cfgDir.listFiles((dir, name) -> TAOS_CFG_FILENAME.equalsIgnoreCase(name))[0]; List endpoints = loadConfigEndpoints(cfgFile); diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/DatetimeBefore1970Test.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/DatetimeBefore1970Test.java new file mode 100644 index 0000000000000000000000000000000000000000..fb69b36f59522675e53305ab6ff4cb4393f46198 --- /dev/null +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/DatetimeBefore1970Test.java @@ -0,0 +1,68 @@ +package com.taosdata.jdbc.cases; + +import com.taosdata.jdbc.utils.TimestampUtil; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.sql.*; + +public class DatetimeBefore1970Test { + + private static Connection conn; + + @Test + public void test() { + try (Statement stmt = conn.createStatement()) { + stmt.executeUpdate("insert into weather values('1969-12-31 23:59:59.999')"); + stmt.executeUpdate("insert into weather values('1970-01-01 00:00:00.000')"); + stmt.executeUpdate("insert into weather values('1970-01-01 08:00:00.000')"); + stmt.executeUpdate("insert into weather values('1970-01-01 07:59:59.999')"); + + ResultSet rs = stmt.executeQuery("select * from weather"); + while (rs.next()) { + Timestamp ts = rs.getTimestamp("ts"); + System.out.println("long: " + ts.getTime() + ", string: " + TimestampUtil.longToDatetime(ts.getTime())); + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) { + System.out.println("timestamp: " + Long.MAX_VALUE + ", string: " + TimestampUtil.longToDatetime(Long.MAX_VALUE)); + System.out.println("timestamp: " + Long.MIN_VALUE + ", string: " + TimestampUtil.longToDatetime(Long.MIN_VALUE)); + System.out.println("timestamp: " + 0 + ", string: " + TimestampUtil.longToDatetime(0)); + System.out.println("timestamp: " + -1 + ", string: " + TimestampUtil.longToDatetime(-1)); + String datetime = "1970-01-01 00:00:00.000"; + System.out.println("timestamp: " + TimestampUtil.datetimeToLong(datetime) + ", string: " + datetime); + datetime = "1969-12-31 23:59:59.999"; + System.out.println("timestamp: " + TimestampUtil.datetimeToLong(datetime) + ", string: " + datetime); + } + + @BeforeClass + public void beforeClass() { + try { + Class.forName("com.taosdata.jdbc.TSDBDriver"); + conn = DriverManager.getConnection("jdbc:TAOS://127.0.0.1:6030/?user=root&password=taosdata"); + Statement stmt = conn.createStatement(); + stmt.execute("drop database if exists test_timestamp"); + stmt.execute("create database if not exists test_timestamp keep 36500"); + stmt.execute("use test_timestamp"); + stmt.execute("create table weather(ts timestamp)"); + stmt.close(); + } catch (ClassNotFoundException | SQLException e) { + e.printStackTrace(); + } + } + + @AfterClass + public void afterClass() { + try { + if (conn != null) + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } +} diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/utils/TimeStampUtil.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/utils/TimestampUtil.java similarity index 98% rename from src/connector/jdbc/src/test/java/com/taosdata/jdbc/utils/TimeStampUtil.java rename to src/connector/jdbc/src/test/java/com/taosdata/jdbc/utils/TimestampUtil.java index 1c6af7e3d2f1fd36fa620ab4a4dec77636d92db4..16f8269d246f094558bbe7f6b11ac4bd90eb888f 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/utils/TimeStampUtil.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/utils/TimestampUtil.java @@ -4,7 +4,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; -public class TimeStampUtil { +public class TimestampUtil { private static final String datetimeFormat = "yyyy-MM-dd HH:mm:ss.SSS";