读取日期和时间类型数据

更新时间:
复制 MD 格式

通过 Java SDK 读取 SQL 查询结果中的 DATETIME、DATE 和 TIME 类型数据。

前提条件

功能说明

调用 sqlQuery 方法执行 SELECT 语句,并使用 SQL 日期和时间函数将数值转换为 DATETIMETIMEDATE 类型。from_unixtime 的输入为秒级 Unix 时间戳。

SQLQueryResponse sqlQuery(SQLQueryRequest request)
重要

getDateTime 返回 UTC 时区的时间。需要使用其他时区时,通过 withZoneSameInstant 转换时区。

以下示例将 example_table 映射表中 event_time 列的秒级 Unix 时间戳转换为日期和时间类型,并按列名读取转换结果。

String query = "SELECT "
        + "from_unixtime(event_time) AS datetime_value, "
        + "time(from_unixtime(event_time)) AS time_value, "
        + "date(from_unixtime(event_time)) AS date_value "
        + "FROM example_table WHERE tenant_id = 1 LIMIT 1";
SQLQueryRequest request = new SQLQueryRequest(query);

SQLQueryResponse response = client.sqlQuery(request);
SQLResultSet resultSet = response.getSQLResultSet();
while (resultSet.hasNext()) {
    SQLRow row = resultSet.next();
    ZonedDateTime dateTime = row.getDateTime("datetime_value");
    Duration time = row.getTime("time_value");
    LocalDate date = row.getDate("date_value");

    System.out.println(dateTime.withZoneSameInstant(ZoneId.of("Asia/Shanghai")));
    System.out.println(time);
    System.out.println(date);
}

参数说明

SQLQueryRequest 包含以下参数。

名称

类型

说明

query(必选)

String

要执行的 SELECT 语句。通过 from_unixtimetimedate 等函数返回所需的日期和时间类型。

返回值

SQLQueryResponse.rows 存储序列化的 SQL 查询结果。通过 getSQLResultSet() 获取解析后的 SQLResultSet,再从 SQLRow 中读取日期和时间类型的列值。

日期和时间类型读取方法

方法

返回类型

说明

getDateTime(int columnIndex)

ZonedDateTime

按列序号读取 DATETIME 类型值。

getDateTime(String columnName)

ZonedDateTime

按列名读取 DATETIME 类型值。

getTime(int columnIndex)

Duration

按列序号读取 TIME 类型值。

getTime(String columnName)

Duration

按列名读取 TIME 类型值。

getDate(int columnIndex)

LocalDate

按列序号读取 DATE 类型值。

getDate(String columnName)

LocalDate

按列名读取 DATE 类型值。