Ir ao conteúdo

PHP Imprimir tabela com condicional de data e horário


Ir à solução Resolvido por DiF,

Posts recomendados

Postado

Tenho duas colunas na tabela agenda inicio e termino (DATATIME) Uso uma consulta para imprimir na tela todos os agendamentos do dia. OK, funciona.
Mas quero que fique mostrando na tela até 30 minutos após o horário da coluna termino, a clausula WHERE esta assim, mas não funciona:

WHERE inicio = '$hoje' AND termino = CURTIME() + 30 ORDER BY inicio ASC");

 

Postado

O problema com a sua cláusula WHERE é que você está comparando a coluna "termino" com a função CURTIME(), que retorna apenas o horário atual do servidor. Para verificar se a hora atual está dentro de 30 minutos após o horário da coluna "termino", você pode usar a função DATE_ADD() do MySQL.

Aqui está um exemplo de cláusula WHERE que deve funcionar para o que você está tentando fazer

 

WHERE inicio = '$hoje' AND termino <= DATE_ADD(NOW(), INTERVAL 30 MINUTE) ORDER BY inicio ASC

 

Esta cláusula WHERE irá selecionar apenas os registros onde a coluna "inicio" é igual a "$hoje" (assumindo que "$hoje" é uma variável que contém a data atual) e a coluna "termino" está dentro de 30 minutos após a hora atual. A função DATE_ADD() é usada para adicionar 30 minutos à hora atual (NOW()) e, em seguida, comparar com a coluna "termino".

Espero que isso ajude...

  • Curtir 1
Postado
  Em 13/03/2023 às 21:21, Marlonxv disse:

O problema com a sua cláusula WHERE é que você está comparando a coluna "termino" com a função CURTIME(), que retorna apenas o horário atual do servidor. Para verificar se a hora atual está dentro de 30 minutos após o horário da coluna "termino", você pode usar a função DATE_ADD() do MySQL.

Aqui está um exemplo de cláusula WHERE que deve funcionar para o que você está tentando fazer

 

WHERE inicio = '$hoje' AND termino <= DATE_ADD(NOW(), INTERVAL 30 MINUTE) ORDER BY inicio ASC

 

Esta cláusula WHERE irá selecionar apenas os registros onde a coluna "inicio" é igual a "$hoje" (assumindo que "$hoje" é uma variável que contém a data atual) e a coluna "termino" está dentro de 30 minutos após a hora atual. A função DATE_ADD() é usada para adicionar 30 minutos à hora atual (NOW()) e, em seguida, comparar com a coluna "termino".

Espero que isso ajude...

Expandir  

Não funcionou Marlon, já tentei outras formas e não obtive resultado positivo.

  • Moderador
  • Solução
Postado

@RogerBlower Você pode tentar usar a função ADDTIME()

 

Exemplo bem simples e funcional

CREATE TABLE teste (
    id INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    inicio DATETIME,
    termino DATETIME
);


INSERT INTO teste (inicio, termino)
VALUES ('2023-03-14 19:30:00', '2023-03-15 20:00:00');

 

SELECT  inicio, ADDTIME(termino, "00:30:00") as termino
FROM teste

 

spacer.png

Repare no valor do campo termino que foi cadastrado...  2023-03-15  20:00:00

 

e então a consulta retornou no término 30 minutos depois.

Com isso em mente.. você pode adaptar para a consulta que você deseja.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Mostrar mais  

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

Mostrar mais  
×
×
  • Criar novo...