Tablestore SDK for Java を使用して、SQL クエリ結果から DATETIME、DATE、TIME の値を読み取ります。
前提条件
Tablestore SDK for Java をインストールし、クライアントを初期化します。
Tablestore SDK for Java 5.16.0 以降を使用します。
マッピングテーブルを作成します。
説明
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 (必須) |
文字列 |
実行する |
レスポンス
SQLQueryResponse.rows には、シリアル化された SQL クエリ結果が格納されます。getSQLResultSet() を呼び出して解析された SQLResultSet を取得し、次に SQLRow から日付と時刻の値を読み取ります。
日付と時刻の値を読み取るメソッド
|
メソッド |
戻り値の型 |
説明 |
|
|
ZonedDateTime |
列インデックスによって |
|
|
ZonedDateTime |
列名で |
|
|
Duration |
列インデックスで |
|
|
Duration |
列名で |
|
|
LocalDate |
列インデックスによって |
|
|
LocalDate |
列名で |