Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ualace Moura

[Resolvido] Como exibir um registro do banco de dados 12 horas ap

Recommended Posts

Olá pessoal bom dia,

 

 

Estou tetando criar uma consulta que mostre os registros do banco de dados 12 horas apos ser criado comparando a data e hora do banco com a data e hora atual.

 

Por exemplo. na minha tabela tenho um campo chamada HORARIO que armazena da data e hora assim YYYY-MM-DD H:M:S.

dai eu queria fazer uma comparação da data deste campo com a data atual onde a consulta mostraria apenas os registros que tivessem mais de 12 horas de criado.

 

To tentando fazer assim mas não dá certo.

 


<?php

$exibir1 = date(" Y-m-d 00:00:00");
$exibir2 = date(" Y-m-d 12:00:00");

$data3 = strtotime($exibir2);
$data4 = strtotime($exibir1);

#armazenando o valor da subtracao das datas
$d3 = ($data3-$data4);

#usando o round para arrendondar os valores
#converter o tempo em dias
$dias = round(($d3/60/60/24));

#converter o tempo em horas
$hrs = round(($d3/60/60));

#converter o tempo em minutos
$mins = round(($d3/60));

$link = mysql_query("SELECT
		id,
		usuario,
		sobre,
		categoria,
		publicado,
		data,
		hora,
		titulo,
		subtitulo,
		autor,
		foto,
		comentario,
		noticia,
		marca,
		status,
		destaque,
		pagina,
		horario
		FROM noticias WHERE status = 'on' AND destaque ='autodestaque' AND pagina = 'auto' AND horario >= '$hrs' ORDER BY date_format(horario,'%Y-%m-%d %H:%M:%S') DESC LIMIT 5")

 

 

Desde já agradeço toda ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Registros do Mesmo Dia ?

 

É que na verdade não to tendo ideia de como fazer, mas poderia estar registrado a data de hoje de ontem, em fim, teria que fazer uma comparação no caso se eu criasse um registro dia 04-10-2012 01:00:00 quando fosse 04-10-2012 13:00:00 o registro seria mostrado, ou seja 12 horas depois, entende?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendo.

 

Perguntei se é só do mesmo dia, ou de um dia para outro.

 

Porquê vai se passar 30 dias e vai mostrar todos os registros anteriores e assim com 60 dias, 90 dias, 120 dias.

 

Ou você só quer daquele dia, por assim dizer ?

 

Mas enfim, use TimeDiff()

 

Select 
  Tal, 
  Tal, 
  Tal 
From 
   Tabela
Where
  TIMEDIFF(HORARIO, NOW()) >= 12

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendo.

 

Perguntei se é só do mesmo dia, ou de um dia para outro.

 

Porquê vai se passar 30 dias e vai mostrar todos os registros anteriores e assim com 60 dias, 90 dias, 120 dias.

 

Ou você só quer daquele dia, por assim dizer ?

 

Mas enfim, use TimeDiff()

 

Select 
  Tal, 
  Tal, 
  Tal 
From 
   Tabela
Where
  TIMEDIFF(HORARIO, NOW()) >= 12

 

Humm sim poderia ser do dia anterior contanto que tenha mais de 12 horas em comparação coma a data e hora atual.

Usei o TIMEDIFF(HORARIO, NOW()) >= 12 como me recomendou mas não mostrou nenhum registro sendo que tenho vário registros criados a mais de 12 horas, no caso criados ontem. ou o TIMEDIFF(HORARIO, NOW()) >= 12 só pegaria do dia atual?

 

fiz assim:

 


<?php
$link = mysql_query("SELECT
		id,
		usuario,
		sobre,
		categoria,
		publicado,
		data,
		hora,
		titulo,
		subtitulo,
		autor,
		foto,
		comentario,
		noticia,
		marca,
		status,
		destaque,
		pagina,
		horario
		FROM noticias WHERE status = 'on' AND destaque ='autodestaque' AND pagina = 'auto' AND TIMEDIFF(horario, NOW()) >= 12 ORDER BY date_format(horario,'%Y-%m-%d %H:%M:%S') DESC LIMIT 5")
or die(mysql_error());

 

 

Agradeço sua atenção

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem várias condições no Where. A pergunta é: Todas estão batendo com os registros ?

O Status é "on", o Destaque é "autodestaque", a Pagina é "auto" ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem várias condições no Where. A pergunta é: Todas estão batendo com os registros ?

O Status é "on", o Destaque é "autodestaque", a Pagina é "auto" ?

 

Isso para que os registros seja exibidos tem que ter exatamente etas condições e ainda que eu coloque sem estas condições eles não mostraram os registros de ontem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quer tipo de Campo está o campo Horario ?

 

Ao invés de Now(), coloca TimeStamp.

 

Não deu se eu coloco TimeStamp dá um erro.

 

SELECT * from `tabela` where TIMEDIFF( now() ,`campo_data`) > '12:00:00'

 

Nesse caso dá no mesmo que TIMEDIFF(HORARIO, NOW()) >= 12 não exibe nada.

 

Se algum mais ai puder me ajudar agradeço muito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei aqui agora

 

SELECT * from `tabela` where TIMEDIFF( now() ,`campo_data`) > '12:00:00'

 

funciona perfeitamente

 

Olá

Victor Cometti

 

 

Fato, agora funcionou e descobri o porque, gostaria que me explicasse isso.

esse é o código que me mandou;

 

 

SELECT * from `tabela` where TIMEDIFF( now() ,`campo_data`) > '12:00:00'

 

Observei que `campo_data` você usou Crase e quando eu fui usar o código eu mudei para 'campo_data' aspas simples e por isso não exibiu.

Mas eu não entendi o porque. Poderia me explicar.

 

Desde já agradeço toda sua ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

explico

 

Tudo que está com aspas simples é interpretado como texto.

Agora quanto as crases são utilizadas quando é mencionado um nome de uma campo, tabela ou banco.

 

O banco entendeu que era um texto e não um campo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

complementando,

 

o uso da crase para referenciar ao nome de tabelas e colunas serve para eviar conflito com nomes reservados da sintaxe sql

 

por exemplo, `name`, `or`, `data`, `date`, `select`, etc...

Compartilhar este post


Link para o post
Compartilhar em outros sites

complementando,

 

o uso da crase para referenciar ao nome de tabelas e colunas serve para eviar conflito com nomes reservados da sintaxe sql

 

por exemplo, `name`, `or`, `data`, `date`, `select`, etc...

 

Olá Victor Cometti e hinom,

 

agora entendi muito bem, nem fazia ideia disso. Agora já sei, quando fizer referência a texto uso sapas simples quando for a algum campo uso crase. muito bom

Muito obrigado a todos vocês. RESOLVIDO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.