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
-
O Tablestore SDK for Java V5.16.0 ou posterior está instalado. Para mais informações, consulte Instale o Tablestore SDK for Java.
ImportanteO Tablestore SDK for Java V5.16.0 e versões posteriores suportam o retorno de dados de data e hora, apenas data e apenas hora na resposta de uma instrução SQL. Para obter detalhes sobre o histórico de versões do Tablestore SDK for Java, consulte Histórico de versões do Tablestore SDK for Java.
Um cliente foi inicializado. Para mais informações, consulte a seção "Inicializar um cliente" no tópico Inicialização.
Uma tabela de mapeamento foi criada. Para mais informações, consulte Crie uma tabela de mapeamento para uma tabela.
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 adequada ao tipo de dado que deseja consultar.
O fuso horário padrão dos dados retornados pela operação getDateTime é UTC. Converta o fuso horário conforme os requisitos do seu negócio.
|
Tipo de tempo |
Operação |
Parâmetro |
Tipo de valor de retorno |
|
Data e hora |
getDateTime |
columnIndex (tipo INT) |
java.time.ZonedDateTime |
|
Data e hora |
getDateTime |
columnName (tipo STRING) |
java.time.ZonedDateTime |
|
Hora |
getTime |
columnIndex (tipo INT) |
java.time.Duration |
|
Hora |
getTime |
columnName (tipo STRING) |
java.time.Duration |
|
Data |
getDate |
columnIndex (tipo INT) |
java.time.LocalDate |
|
Data |
getDate |
columnName (tipo STRING) |
java.time.LocalDate |
Parâmetro
|
Parâmetro |
Descrição |
|
query |
A 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 em formatos de data e hora, apenas hora e apenas 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.
private static void queryData(SyncClient client) {
// Create an SQL request.
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");
// Obtain the response to the SQL request.
SQLQueryResponse response = client.sqlQuery(request);
// Obtain the SQL request type.
System.out.println("response type: " + response.getSQLStatementType());
// Obtain the response schema of the SQL statement.
SQLTableMeta tableMeta = response.getSQLResultSet().getSQLTableMeta();
System.out.println("response table meta: " + tableMeta.getSchema());
// Obtain the response result of the SQL statement.
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"));
}
}
Resposta de exemplo:
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