通過 Java SDK 讀取 SQL 查詢結果中的 DATETIME、DATE 和 TIME 類型資料。
前提條件
安裝Tablestore Java SDK並初始化用戶端。
使用 5.16.0 及以上版本的 Tablestore Java SDK。
已建立映射關係。
功能說明
調用 sqlQuery 方法執行 SELECT 語句,並使用 SQL 日期和時間函數將數值轉換為 DATETIME、TIME 或 DATE 類型。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 |
要執行的 |
傳回值
SQLQueryResponse.rows 儲存序列化的 SQL 查詢結果。通過 getSQLResultSet() 擷取解析後的 SQLResultSet,再從 SQLRow 中讀取日期和時間類型的列值。
日期和時間類型讀取方法
|
方法 |
傳回型別 |
說明 |
|
|
ZonedDateTime |
按列序號讀取 |
|
|
ZonedDateTime |
按列名讀取 |
|
|
Duration |
按列序號讀取 |
|
|
Duration |
按列名讀取 |
|
|
LocalDate |
按列序號讀取 |
|
|
LocalDate |
按列名讀取 |