Olá a todos,estou com uma duvida com validação de horarios,onde preciso que o sistema não deixe uma nova consulta medica ser registrada caso uma ja tenha sido feita em menos de 30 minutos.Estou querendo verificar isso,pois nunca trabalhei com este tipo de validação.
Pedro, veja se este artigo anterior lhe ajuda, foi mesma situação : obter o tempo em minutos/horas entre duas data-hora, que no seu caso deve ser DataHoraAgora e DataHoraUltimaConsulta, calcular o tamanho do intervalor, no seu caso em minutos, e decidir em função de um valor maximo parametrizavel, que agora para vc é de 30 minutos mas pode mudar, certo ?
De um jeito um pouco mais alto nível, sem ficar fazendo multiplicamos mirabolantes, que você olha e código e demora um pouquinho pra entender, se estiver usando java 8, ele já possui uma api nativa para trabalhar com datas, caso esteja em um ambiente inferior ao java 8, você pode usar o joda time, que é o qual vou deixar um exemplo aqui.
Date time = new GregorianCalendar().getTime();
Date time1 = new GregorianCalendar(2016, 2, 22, 11, 03).getTime();
DateTime dateTime = new DateTime(time);
DateTime dateTime2 = new DateTime(time1);
int minutes = Minutes.minutesBetween(dateTime2, dateTime).getMinutes();
System.out.println(minutes);
if(minutes <= 30){ // faz algo
}
Ai o que mudaria é como vc está obtendo essa data, se vem um date, um calendar, uma string, ai você teria que fazer o parse para o joda-time, mas a implementação em si, é isso
Boa Tarde, como ficaria o SQL do datetime2, estou criando uma tabela, e coloquei
CREATE TABLE ‘tb_acesso’ ( id_acesso int(111) NOT NULL, name_acessovarchar(20) NOT NULL, password_acesso varchar(20) NOT NULL, last_acess Datetime2(7) not null default getDate(),
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
no
INSERT INTO tb_acesso (id_acesso,name_acesso, password_acesso,last_acess) VALUES (1,Joao,‘qualquersenha’, 2017-10-18 14:58:25.1234567);
ALTER TABLE tb_acesso);
ADD PRIMARY KEY (ìd_acesso`);
ALTER TABLE tb_acesso
MODIFY id_acessoint(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1; COMMIT;