Topik ini menjelaskan cara menanyakan data datetime, data tanggal, dan data waktu dalam respons dari pernyataan SQL.
Prasyarat
Tablestore SDK for Java V5.16.0 atau yang lebih baru telah diinstal. Untuk informasi lebih lanjut, lihat Instal Tablestore SDK for Java.
PentingTablestore SDK for Java V5.16.0 dan yang lebih baru mendukung pengembalian data datetime, data tanggal, dan data waktu dalam respons dari pernyataan SQL. Untuk informasi lebih lanjut tentang riwayat versi Tablestore SDK for Java, lihat Riwayat Versi Tablestore SDK for Java.
Klien telah diinisialisasi. Untuk informasi lebih lanjut, lihat bagian "Inisialisasi Klien" dari topik Inisialisasi.
Tabel pemetaan telah dibuat. Untuk informasi lebih lanjut, lihat Buat Tabel Pemetaan untuk Sebuah Tabel.
Operasi API
Tabel berikut menggambarkan operasi API yang dapat Anda panggil untuk menanyakan berbagai jenis data tanggal dan waktu. Pilih operasi berdasarkan jenis data tanggal dan waktu yang ingin Anda tanyakan.
Zona waktu default dari data yang dikembalikan oleh operasi getDateTime adalah dalam UTC. Konversikan zona waktu sesuai dengan kebutuhan bisnis Anda.
Jenis waktu | Operasi | Parameter | Tipe nilai kembali |
Datetime | getDateTime | columnIndex (tipe INT) | java.time.ZonedDateTime |
Datetime | getDateTime | columnName (tipe STRING) | java.time.ZonedDateTime |
Waktu | getTime | columnIndex (tipe INT) | java.time.Duration |
Waktu | getTime | columnName (tipe STRING) | java.time.Duration |
Tanggal | getDate | columnIndex (tipe INT) | java.time.LocalDate |
Tanggal | getDate | columnName (tipe STRING) | java.time.LocalDate |
Parameter
Parameter | Deskripsi |
query | Pernyataan SQL. Konfigurasikan parameter berdasarkan fitur yang diperlukan. |
Contoh
Anda dapat mengeksekusi pernyataan 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 untuk menanyakan data dalam kolom time_col dari tabel test_table dan mengonversi data tersebut menjadi data datetime, data waktu, dan data tanggal. Maksimal satu baris data akan dikembalikan. Sistem mengembalikan tipe permintaan, skema respons, dan hasil respons dari pernyataan SQL.
private static void queryData(SyncClient client) {
// Buat permintaan 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");
// Dapatkan respons dari permintaan SQL.
SQLQueryResponse response = client.sqlQuery(request);
// Dapatkan tipe permintaan SQL.
System.out.println("response type: " + response.getSQLStatementType());
// Dapatkan skema respons dari pernyataan SQL.
SQLTableMeta tableMeta = response.getSQLResultSet().getSQLTableMeta();
System.out.println("response table meta: " + tableMeta.getSchema());
// Dapatkan hasil respons dari pernyataan 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"));
}
}Contoh Respons:
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