Bom dia…
Estou criando um sistema pra registro de ponto dos colaboradores do lugar onde trabalho.
Armazeno em uma tabela os registros feitos e no momento do último registro do dia, eu rodo uma função que calcula os saldos dos registros do dia.
- Seleciona todos os registros de uma Pessoa.
- Calcula o tempo de Expediente e de Café.
- Finalmente insere na tabela de saldo os totais de saldo do dia.
Entre o primeiro e o segundo passo, rodo o SELECT ABAIXO(Considere as datas e ID, para facilitar o entendimento):
SELECT TIMESTAMPDIFF
(SECOND,
(SELECT r.data_hora
FROM registro AS r
WHERE r.data_hora BETWEEN ‘2019-11-26 00:00:00’ AND ‘2019-11-26 23:59:59’
AND r.id_oper = 1
AND r.id_colab = 1),
(SELECT r.data_hora
FROM registro AS r
WHERE r.data_hora BETWEEN ‘2019-11-26 00:00:00’ AND ‘2019-11-26 23:59:59’
AND r.id_oper = 2
AND r.id_colab = 1)
);
Quando faço consultas de vários registros, utilizo a lista e atribuo os valores por nome de coluna com o resultSet. Mas no caso do Select acima, eu recebo um retorno de resultado e não o valor de uma coluna.
E neste caso, não sei como atribuir esse valor a uma variável.
A nível de curiosidade, na classe Saldo, criei um atributo do tipo Float ‘result_dif’ e seus respectivos get e set.
Abaixo o Método que estava fazendo para pegar esse valor:
public List diferencaSaldo(int opeFim,int opeIni, int colab) {
String dia = Util.pegaData(“dd”);
List lSaldo = new ArrayList<>();
String sql = "SELECT TIMESTAMPDIFF(SECOND, "
+ "(SELECT r.data_hora "
+ "FROM registro AS r "
+ "WHERE r.data_hora BETWEEN '2019-11-"+ dia +" 00:00:00' "
+ " AND '2019-11-"+ dia +" 23:59:59' "
+ " AND r.id_oper = " + opeIni
+ " AND r.id_colab = " + colab + "),"
+ " (SELECT r.data_hora "
+ " FROM registro AS r"
+ " WHERE r.data_hora BETWEEN '2019-11-"+ dia +" 00:00:00' "
+ " AND '2019-11-"+ dia +" 23:59:59'"
+ " AND r.id_oper = "+ opeFim
+ " AND r.id_colab = " + colab + "));";
System.out.println(sql);
try {
ResultSet result;
PreparedStatement p = con.getConnection().prepareStatement(sql);
System.out.println(p);
result = p.executeQuery();
while(result.next()) {
Saldo saldo = new Saldo();
saldo.setResultDif(result.??? ); //ESTOU AGARRADO AQUI!
lSaldo.add(saldo);
System.out.println(lSaldo);
}
p.close();
System.out.println("Sucesso, Malucão!");
} catch (Exception e) {
System.out.println(e);
}
return lSaldo;
}