Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
>
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?
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()) >= 12Exatamente, use apenas a query para resolver, nem precisa de PHP para isso ñ. SQL resolve. :thumbsup:
>
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
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" ?
>
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
Quer tipo de Campo está o campo Horario ?
Ao invés de Now(), coloca TimeStamp.
SELECT * from tabela where TIMEDIFF( now() ,campo_data) > '12:00:00'
>
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
Testei aqui agora
SELECT * from tabela where TIMEDIFF( now() ,campo_data) > '12:00:00'
funciona perfeitamente
>
Testei aqui agora
SELECT * from tabela where TIMEDIFF( now() ,campo_data) > '12:00:00'
funciona perfeitamente
Olá
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.
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.
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...
>
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.
Registros do Mesmo Dia ?