このトピックでは、SQL ステートメントのレスポンスで日付時刻データ、日付データ、および時刻データをクエリする方法について説明します。
前提条件
Tablestore SDK for Java V5.16.0 以降がインストールされていること。詳細については、Tablestore SDK for Java のインストールを参照してください。
重要Tablestore SDK for Java V5.16.0 以降では、SQL ステートメントのレスポンスで日付時刻データ、日付データ、および時刻データを返すことがサポートされています。Tablestore SDK for Java のバージョン履歴の詳細については、Tablestore SDK for Java のバージョン履歴を参照してください。
クライアントが初期化されていること。詳細については、初期化トピックの「クライアントの初期化」セクションを参照してください。
マッピングテーブルが作成されていること。詳細については、テーブルのマッピングテーブルの作成を参照してください。
API 操作
次の表に、さまざまな種類の日付時刻データをクエリするために呼び出すことができる API 操作を示します。クエリする日付時刻データの種類に基づいて操作を選択します。
getDateTime
操作によって返されるデータのデフォルトのタイムゾーンは UTC です。ビジネス要件に基づいてタイムゾーンを変換してください。
時刻の種類 | 操作 | パラメーター | 戻り値の型 |
日付時刻 | getDateTime | columnIndex (INT 型) | java.time.ZonedDateTime |
日付時刻 | getDateTime | columnName (STRING 型) | java.time.ZonedDateTime |
時刻 | getTime | columnIndex (INT 型) | java.time.Duration |
時刻 | getTime | columnName (STRING 型) | java.time.Duration |
日付 | getDate | columnIndex (INT 型) | java.time.LocalDate |
日付 | getDate | columnName (STRING 型) | java.time.LocalDate |
パラメーター
パラメーター | 説明 |
query | SQL ステートメント。必要な機能に基づいてパラメーターを設定します。 |
例
select from_unixtime(time_col) as datetime_value, time(from_unixtime(time_col)) as time_value, or date(from_unixtime(time_col)) as date_value from test_table limit 1
ステートメントを実行して、test_table テーブルの time_col 列のデータをクエリし、データを日付時刻データ、時刻データ、および日付データに変換できます。最大 1 行のデータが返されます。システムは、SQL ステートメントの要求タイプ、レスポンススキーマ、およびレスポンス結果を返します。
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ステートメントのレスポンススキーマを取得します。
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