Este tópico descreve como consultar dados de data e hora, apenas data e apenas hora na resposta de uma instrução SQL.
Pré-requisitos
TableStoreClient inicializado. Para mais informações, consulte a seção "Inicializar o TableStoreClient" no tópico Inicialização.
Tabela de mapeamento criada. Para mais informações, consulte Criar uma tabela de mapeamento.
Operações de API
A tabela a seguir descreve as operações de API disponíveis para consultar diferentes tipos de dados de data e hora. Selecione a operação conforme o tipo de dado desejado.
O fuso horário padrão dos dados retornados pela operação getDateTime é UTC. Converta o fuso horário conforme as necessidades do seu negócio.
|
Tipo de tempo |
Operação |
Parâmetro |
Tipo de valor de retorno |
|
Data e hora |
getDateTime |
columnIndex (tipo INT) |
time.Time |
|
Data e hora |
getDateTime |
columnName (tipo STRING) |
time.Time |
|
Hora |
getTime |
columnIndex (tipo INT) |
time.Duration |
|
Hora |
getTime |
columnName (tipo STRING) |
time.Duration |
|
Data |
getDate |
columnIndex (tipo INT) |
time.Time |
|
Data |
getDate |
columnName (tipo STRING) |
time.Time |
Parâmetro
|
Parâmetro |
Descrição |
|
query |
Instrução SQL. Configure este parâmetro de acordo com o recurso necessário. |
Exemplo
Execute a instrução 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 para consultar dados na coluna time_col da tabela test_table e convertê-los nos formatos de data e hora, hora e data. O sistema retorna no máximo uma linha de dados, incluindo o tipo de solicitação, o esquema da resposta e o resultado da instrução SQL.
func queryData(client *tablestore.TableStoreClient) {
// Create an SQL request.
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"}
// Obtain the response to the SQL request.
response, err := client.SQLQuery(request)
if err != nil {
panic(err)
}
// Obtain the response result of the SQL statement.
resultSet := response.ResultSet
fmt.Println("response resultset:")
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:] get column error, name: ", name, ", error: ", err.Error())
continue
}
if isnull {
println("[INFO]: column is SQL NULL, name: ", name)
continue
}
switch columns[i].Type {
case tablestore.ColumnType_DATETIME:
time, err := row.GetDateTime(i)
if err != nil {
println("[INFO:] get column error, name: ", name, ", error: ", err.Error())
}
println(time.Local().String())
time, err = row.GetDateTimeByName("datetime_value")
if err != nil {
println("[INFO:] get column error, name: ", name, ", error: ", err.Error())
}
println(time.String())
case tablestore.ColumnType_TIME:
duration, err := row.GetTime(i)
if err != nil {
println("[INFO:] get column error, name: ", name, ", error: ", err.Error())
}
println(duration.String())
duration, err = row.GetTimeByName("time_value")
if err != nil {
println("[INFO:] get column error, name: ", name, ", error: ", err.Error())
}
println(duration.String())
case tablestore.ColumnType_DATE:
date, err := row.GetDate(i)
if err != nil {
println("[INFO:] get column error, name: ", name, ", error: ", err.Error())
}
println(date.String())
date, err = row.GetDateByName("date_value")
if err != nil {
println("[INFO:] get column error, name: ", name, ", error: ", err.Error())
}
println(date.String())
}
}
}
}
Resposta de exemplo:
response resultset:
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