全部产品
Search
文档中心

Tablestore:Menanyakan data tanggal dan waktu

更新时间:Jul 02, 2025

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.

Penting

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