Consultar intervalo entre data e hora cadastrados no ACCESS+DELPHI
Olá pessoal,
Estou utilizando o bando de dados access em um programa que estou desenvolvendo com o Delphi. No access eu tenho uma tabela chamada "CADASTRO" que possui 4 informações, sendo elas: DATA_INICIAL, DATA_FINAL, HORA_INICIAL, HORA_FINAL.
Gostaria de saber como faço para pegar esses dados no banco de dados e consultar o intervalo entre eles? No caso, eu quero consultar o intervalo entre a data final e a data inicial (em dias). E em outro momento também quero consultar o intervalo entre a hora final e a hora inicial.
Por exemplo, suponha que as informações sejam:
DATA_INICIAL : 10/09/2019
DATA_FINAL: 15/09/2019
HORA_INICIAL: 10:20:12
HORA_FINAL: 12:00:00
Logo o resultado seria:
INTERVALO_DATAS: 5 dias
INTERVALO_HORAS: 02:20:12
Obrigado desde já.
Estou utilizando o bando de dados access em um programa que estou desenvolvendo com o Delphi. No access eu tenho uma tabela chamada "CADASTRO" que possui 4 informações, sendo elas: DATA_INICIAL, DATA_FINAL, HORA_INICIAL, HORA_FINAL.
Gostaria de saber como faço para pegar esses dados no banco de dados e consultar o intervalo entre eles? No caso, eu quero consultar o intervalo entre a data final e a data inicial (em dias). E em outro momento também quero consultar o intervalo entre a hora final e a hora inicial.
Por exemplo, suponha que as informações sejam:
DATA_INICIAL : 10/09/2019
DATA_FINAL: 15/09/2019
HORA_INICIAL: 10:20:12
HORA_FINAL: 12:00:00
Logo o resultado seria:
INTERVALO_DATAS: 5 dias
INTERVALO_HORAS: 02:20:12
Obrigado desde já.
Augusto
Curtidas 0
Melhor post
Marcus Pereira
16/07/2020
Boa noite, adicionando ao seu uses a unit System.DateUtils você terá acesso a alguns métodos interessantes para trabalhar datas como:
SecondsBetween(const ANow, AThen: TDateTime)
MinutesBetween(const ANow, AThen: TDateTime)
DaysBetween(const ANow, AThen: TDateTime)
WeeksBetween(const ANow, AThen: TDateTime)
Mas para utilizá-los você precisa de duas constantes do tipo TDATETIME que seria algo como "10/09/2019 10:20:12" e "15/09/2019 12:00:00", e com estas funções você poderia extrair a informação desejada.
Considerando que os valores que você informou são strings ficaria mais ou menos assim:
var
DATA_INICIAL : string;
DATA_FINAL: string;
HORA_INICIAL: string;
HORA_FINAL: string;
datahorainicial : TDateTime;
datahorafinal : TDateTime;
begin
DATA_INICIAL := '10/09/2019';
DATA_FINAL := '15/09/2019';
HORA_INICIAL := '10:20:12';
HORA_FINAL := '12:00:00';
datahorainicial := strtodatetime(DATA_INICIAL+' '+HORA_INICIAL);
datahorafinal := strtodatetime(DATA_FINAL+' '+HORA_FINAL);
com isto você já conseguirá usar as funções da seguinte maneira:
SecondsBetween(datahorainicial , datahorafinal)
e a partir dos segundos você faz as conversões para os valores desejados, bastaria apenas fazer alguns calculos.
A intenção aqui é te dar o caminho a seguir e não a resposta mastigada se me entende, espero que ajude.
SecondsBetween(const ANow, AThen: TDateTime)
MinutesBetween(const ANow, AThen: TDateTime)
DaysBetween(const ANow, AThen: TDateTime)
WeeksBetween(const ANow, AThen: TDateTime)
Mas para utilizá-los você precisa de duas constantes do tipo TDATETIME que seria algo como "10/09/2019 10:20:12" e "15/09/2019 12:00:00", e com estas funções você poderia extrair a informação desejada.
Considerando que os valores que você informou são strings ficaria mais ou menos assim:
var
DATA_INICIAL : string;
DATA_FINAL: string;
HORA_INICIAL: string;
HORA_FINAL: string;
datahorainicial : TDateTime;
datahorafinal : TDateTime;
begin
DATA_INICIAL := '10/09/2019';
DATA_FINAL := '15/09/2019';
HORA_INICIAL := '10:20:12';
HORA_FINAL := '12:00:00';
datahorainicial := strtodatetime(DATA_INICIAL+' '+HORA_INICIAL);
datahorafinal := strtodatetime(DATA_FINAL+' '+HORA_FINAL);
com isto você já conseguirá usar as funções da seguinte maneira:
SecondsBetween(datahorainicial , datahorafinal)
e a partir dos segundos você faz as conversões para os valores desejados, bastaria apenas fazer alguns calculos.
A intenção aqui é te dar o caminho a seguir e não a resposta mastigada se me entende, espero que ajude.
GOSTEI 1
Mais Respostas
Augusto
16/07/2020
Boa noite, adicionando ao seu uses a unit System.DateUtils você terá acesso a alguns métodos interessantes para trabalhar datas como:
SecondsBetween(const ANow, AThen: TDateTime)
MinutesBetween(const ANow, AThen: TDateTime)
DaysBetween(const ANow, AThen: TDateTime)
WeeksBetween(const ANow, AThen: TDateTime)
Mas para utilizá-los você precisa de duas constantes do tipo TDATETIME que seria algo como "10/09/2019 10:20:12" e "15/09/2019 12:00:00", e com estas funções você poderia extrair a informação desejada.
Considerando que os valores que você informou são strings ficaria mais ou menos assim:
var
DATA_INICIAL : string;
DATA_FINAL: string;
HORA_INICIAL: string;
HORA_FINAL: string;
datahorainicial : TDateTime;
datahorafinal : TDateTime;
begin
DATA_INICIAL := '10/09/2019';
DATA_FINAL := '15/09/2019';
HORA_INICIAL := '10:20:12';
HORA_FINAL := '12:00:00';
datahorainicial := strtodatetime(DATA_INICIAL+' '+HORA_INICIAL);
datahorafinal := strtodatetime(DATA_FINAL+' '+HORA_FINAL);
com isto você já conseguirá usar as funções da seguinte maneira:
SecondsBetween(datahorainicial , datahorafinal)
e a partir dos segundos você faz as conversões para os valores desejados, bastaria apenas fazer alguns calculos.
A intenção aqui é te dar o caminho a seguir e não a resposta mastigada se me entende, espero que ajude.
SecondsBetween(const ANow, AThen: TDateTime)
MinutesBetween(const ANow, AThen: TDateTime)
DaysBetween(const ANow, AThen: TDateTime)
WeeksBetween(const ANow, AThen: TDateTime)
Mas para utilizá-los você precisa de duas constantes do tipo TDATETIME que seria algo como "10/09/2019 10:20:12" e "15/09/2019 12:00:00", e com estas funções você poderia extrair a informação desejada.
Considerando que os valores que você informou são strings ficaria mais ou menos assim:
var
DATA_INICIAL : string;
DATA_FINAL: string;
HORA_INICIAL: string;
HORA_FINAL: string;
datahorainicial : TDateTime;
datahorafinal : TDateTime;
begin
DATA_INICIAL := '10/09/2019';
DATA_FINAL := '15/09/2019';
HORA_INICIAL := '10:20:12';
HORA_FINAL := '12:00:00';
datahorainicial := strtodatetime(DATA_INICIAL+' '+HORA_INICIAL);
datahorafinal := strtodatetime(DATA_FINAL+' '+HORA_FINAL);
com isto você já conseguirá usar as funções da seguinte maneira:
SecondsBetween(datahorainicial , datahorafinal)
e a partir dos segundos você faz as conversões para os valores desejados, bastaria apenas fazer alguns calculos.
A intenção aqui é te dar o caminho a seguir e não a resposta mastigada se me entende, espero que ajude.
Obrigado!
GOSTEI 0