Ir ao conteúdo
  • Cadastre-se

PHP Imprimir tabela com condicional de data e horário


Ir à solução Resolvido por DiF,

Posts recomendados

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");

 

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

20 horas atrás, 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...

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

Link para o comentário
Compartilhar em outros sites

  • Moderador
  • Solução

@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.

Link para o comentário
Compartilhar em outros sites

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

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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!