Topik ini menjelaskan cara menanyakan data datetime, data tanggal, dan data waktu dalam respons dari pernyataan SQL.
Prasyarat
TableStoreClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat bagian "Inisialisasi TableStoreClient" pada topik Inisialisasi.
Tabel pemetaan telah dibuat. Untuk informasi lebih lanjut, lihat Buat Tabel Pemetaan.
Operasi API
Tabel berikut menjelaskan operasi API yang dapat Anda panggil untuk menanyakan berbagai jenis data tanggal dan waktu. Pilih operasi sesuai dengan 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 kebutuhan bisnis Anda.
Jenis waktu | Operasi | Parameter | Tipe nilai kembali |
Datetime | getDateTime | columnIndex (tipe INT) | time.Time |
Datetime | getDateTime | columnName (tipe STRING) | time.Time |
Waktu | getTime | columnIndex (tipe INT) | time.Duration |
Waktu | getTime | columnName (tipe STRING) | time.Duration |
Tanggal | getDate | columnIndex (tipe INT) | time.Time |
Tanggal | getDate | columnName (tipe STRING) | time.Time |
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 tabel test_table dan mengonversi data tersebut menjadi data datetime, data waktu, dan data tanggal. Paling banyak satu baris data akan dikembalikan. Sistem mengembalikan tipe permintaan, skema respons, dan hasil respons dari pernyataan SQL.
func queryData(client *tablestore.TableStoreClient) {
// Buat permintaan SQL.
request := &tablestore.SQLQueryRequest{Query: "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 terhadap permintaan SQL.
response, err := client.SQLQuery(request)
if err != nil {
panic(err)
}
// Dapatkan hasil respons dari pernyataan SQL.
resultSet := response.ResultSet
fmt.Println("hasil respons:")
for resultSet.HasNext() {
row := resultSet.Next()
for i := 0; i < len(columns); i++ {
name := columns[i].Name
isnull, err := row.IsNull(i)
if err != nil {
println("[INFO:] kesalahan mendapatkan kolom, nama: ", name, ", kesalahan: ", err.Error())
continue
}
if isnull {
println("[INFO]: kolom adalah SQL NULL, nama: ", name)
continue
}
switch columns[i].Type {
case tablestore.ColumnType_DATETIME:
time, err := row.GetDateTime(i)
if err != nil {
println("[INFO:] kesalahan mendapatkan kolom, nama: ", name, ", kesalahan: ", err.Error())
}
println(time.Local().String())
time, err = row.GetDateTimeByName("datetime_value")
if err != nil {
println("[INFO:] kesalahan mendapatkan kolom, nama: ", name, ", kesalahan: ", err.Error())
}
println(time.String())
case tablestore.ColumnType_TIME:
duration, err := row.GetTime(i)
if err != nil {
println("[INFO:] kesalahan mendapatkan kolom, nama: ", name, ", kesalahan: ", err.Error())
}
println(duration.String())
duration, err = row.GetTimeByName("time_value")
if err != nil {
println("[INFO:] kesalahan mendapatkan kolom, nama: ", name, ", kesalahan: ", err.Error())
}
println(duration.String())
case tablestore.ColumnType_DATE:
date, err := row.GetDate(i)
if err != nil {
println("[INFO:] kesalahan mendapatkan kolom, nama: ", name, ", kesalahan: ", err.Error())
}
println(date.String())
date, err = row.GetDateByName("date_value")
if err != nil {
println("[INFO:] kesalahan mendapatkan kolom, nama: ", name, ", kesalahan: ", err.Error())
}
println(date.String())
}
}
}
}Respons Contoh:
hasil respons:
2023-11-09 10:14:00.01 +0800 CST
2023-11-09 10:14:00.01 +0800 CST
10h14m0.01s
10h14m0.01s
2023-11-09 00:00:00 +0000 UTC
2023-11-09 00:00:00 +0000 UTC