すべてのプロダクト
Search
ドキュメントセンター

Tablestore:日付時刻データのクエリ

最終更新日:Dec 28, 2024

このトピックでは、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