使用SQL語句查詢到時間類型(包括Datetime、Date和Time)數據后,您可以根據實際需要獲取具體數據。
前提條件
已安裝表格存儲Java SDK 5.16.0及之后版本。具體操作,請參見安裝。
重要表格存儲Java SDK從5.16.0版本開始支持SQL查詢返回DateTime、Date和Time類型值。關于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