获取时间类型数据

使用SQL语句查询到时间类型(包括Datetime、DateTime)数据后,您可以根据实际需要获取具体数据。

前提条件

  • 已安装表格存储Java SDK 5.16.0及之后版本。具体操作,请参见安装

    重要

    表格存储Java SDK5.16.0版本开始支持SQL查询返回DateTime、DateTime类型值。关于Java SDK历史迭代版本的更多信息,请参见Java SDK历史迭代版本

  • 已初始化Client。具体操作,请参见初始化Client

  • 已创建映射关系。具体操作,请参见创建表的映射关系

接口说明

获取不同时间类型的接口说明请参见下表,请根据实际时间类型选择。

重要

getDateTime获取的时间时区默认为UTC时区,请根据需要进行时区转换。

时间类型

接口

参数

返回类型

Datetime

getDateTime

columnIndex:int

java.time.ZonedDateTime

Datetime

getDateTime

columnName:String

java.time.ZonedDateTime

Time

getTime

columnIndex:int

java.time.Duration

Time

getTime

columnName:String

java.time.Duration

Date

getDate

columnIndex:int

java.time.LocalDate

Date

getDate

columnName:String

java.time.LocalDate

参数

参数

说明

query

SQL语句,请根据所需功能进行设置。

示例

使用select from_unixtime(time_col) as datetime_value,time(from_unixtime(time_col)) as time_value, date(from_unixtime(time_col)) as date_value from test_table limit 1语句查询test_table表中time_col列数据并将其转换为Datetime、Time、Date三种类型,最多返回1行数据。系统会返回查询语句的请求类型、返回值Schema、返回结果等信息。

private static void queryData(SyncClient client) {
  // 创建SQL请求。
  SQLQueryRequest request = new SQLQueryRequest("select from_unixtime(time_col) as datetime_value,time(from_unixtime(time_col)) as time_value, date(from_unixtime(time_col)) as date_value from test_table limit 1");

  // 获取SQL的响应结果。
  SQLQueryResponse response = client.sqlQuery(request);

  // 获取SQL的请求类型。
  System.out.println("response type: " + response.getSQLStatementType());

  // 获取SQL返回值的Schema。
  SQLTableMeta tableMeta = response.getSQLResultSet().getSQLTableMeta();
  System.out.println("response table meta: " + tableMeta.getSchema());

  // 获取SQL的返回结果。
  SQLResultSet resultSet = response.getSQLResultSet();
  System.out.println("response resultset:");
  while (resultSet.hasNext()) {
      SQLRow row = dateTypeSelectResultSet.next();
      System.out.println(row.getDateTime(0).withZoneSameInstant(ZoneId.systemDefault()) + ", " + row.getDateTime("datetime_value").withZoneSameInstant(ZoneId.systemDefault()) + ", " +
              row.getTime(1) + ", " + row.getTime("time_value") + ", " +
              row.getDate(2) + ", " + row.getDate("date_value"));
  }
}

返回结果如下所示。

date type select query begin
response type: SQL_SELECT
response table meta: [datetime_value:DATETIME, time_value:TIME, date_value:DATE]
response resultset:
2023-11-09T10:14:00.010+08:00[Asia/Shanghai], 2023-11-09T10:14:00.010+08:00[Asia/Shanghai], PT10H14M0.01S, PT10H14M0.01S, 2023-11-09, 2023-11-09
select query end