Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca por intervalo

12-09-2008 22:54

Se você precisa buscar alguma informação na tabela, por exemplo, todos os cadastros de 15 dias atrás até hoje, usa-se:

SELECT * FROM tabela WHERE DATA >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)

1 = quantidade
DAY = tempo

Onde pode ser usado:
DAY = DIA
WEEK = SEMANA
MONTH = MÊS
YEAR = ANO

Também pode ser usado o BETWEEN, para pegar intervalos entre períodos.

SELECT * FROM tabela WHERE DATA BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 WEEK) AND  DATE_SUB(CURDATE(), INTERVAL 1 DAY)

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Busca por intervalo

21-12-2011 16:36

ta fis assim la em baixo no echo nao deverias ser extraido somente as data do dia 21 para tras ???

eu coloquei 3 datas no banco com a coluna do tipo date. uma dia 20 uma no dia 21 e uma no dia 22 nao deveria aparecer do dia 21 para tras ?
apareceu tudo tem algo de errado aki ?

$select = mysql_query("SELECT * FROM cad_log WHERE log_data >= DATE_SUB(CURDATE(), INTERVAL 5 DAY)"); while($sel = mysql_fetch_array($select)){ echo $sel['log_data']; } 

0
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Busca por intervalo

21-12-2011 16:43

nessa configuraçao que eu fiz tem que aparecer dos ultimos 5 dias correto ?
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca por intervalo

21-12-2011 16:56

Esse script que postei serve para obter dados em um intervalo de tempo. No seu caso, você quer obter dados antigos, de tantos dias passados. Vou ver se monto um exemplo.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Busca por intervalo

21-12-2011 17:01

ok fico no aguardo!!!
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca por intervalo

21-12-2011 17:32

Montei aqui um exemplo, ai fiz assim, primeiro, fiz uma linha para definir a data de 5 dias atras.

$menos_5 = date('Y-m-d', strtotime('-5 days'));  

Essa seria a data limite, ou seja, tudo até essa data passada será deletado

Ai, montei uma linha para pegar 20 dias atras

$menos_20 = date('Y-m-d', strtotime('-20 days')); 

Essa linha seria a data inicial, ou seja, a query vai consultar a partir da data de $menos_20 até $menos_5

A query que usei foi essa

SELECT data
FROM tabela
WHERE data
BETWEEN '$menos_20' AND '$menos_5'

Basta aplicar ao DELETE
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Busca por intervalo

21-12-2011 19:02

eu fis um teste para ve se me mostra os dados mas nao mostro achei que podia ser por causa que tinha menos que 20 dados enseridos inseri 25 dados e nao foi o resultado nao sai nd ??

$menos_5 = date('Y-m-d', strtotime('-5 days'));  $menos_20 = date('Y-m-d', strtotime('-20 days')); $select = mysql_query("SELECT * FROM cad_log WHERE log_data BETWEEN '$menos_20' AND '$menos_5'"); while($sel = mysql_fetch_array($select)){          echo $sel['log_data'];               } 

oque tem de errado ai ?
0
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Busca por intervalo

21-12-2011 19:07

me esxplica um pouco sobre oque esta fazendo o -5 e o -20.
ele vai e subitrai oque ele faz?

pq tipo eu quero fazer o seguinte pegar todo dia as 24 horas ele executa procura tudo oque tem o cod_ativa= 0 e que ja se passou 5 dias e deletar sera que voce poderia me dar um exemplo ja no delete ? ele busca tudo que for o cod_ativa = 0 e oque ja se passou 5 dia sem contar o dia que ele esta executando tipo hj e dia 21 ele contaria os dia 20 para tras ate dar os 5 dias e procuraria os que sao igual a "0" e deletaria!


se puder me ajudar te agradeço!
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca por intervalo

21-12-2011 19:16

Essa linha

$menos_5 = date('Y-m-d', strtotime('-5 days'));  

Subtrai 5 dias a partir da data atual, ou seja, se hoje é dia 21, o script irá mostrar 2011/12/16, 5 dias anterior a hoje.

Como expliquei anteriormente, o script irá pegar 20 dias anterior a hoje, depois 5 dias anterior a hoje, e deletar tudo que está nesse intervalo de tempo.

Então rodando o script constantemente vai manter sempre dados no seu banco de dados de até 5 atuais, baseado na data.

A sintaxe DELETE você encontra em http://dev.mysql.com/doc/refman/4.1/pt/delete.html

Basicamente ficaria assim:

DELETE FROM suatabela WHERE data BETWEEN '$menos_20' AND '$menos_5' AND cod_ativa=0

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Busca por intervalo

21-12-2011 19:26


<?php include('conexao/conecta.php'); $menos_5 = date('Y-m-d', strtotime('-5 days'));  $menos_20 = date('Y-m-d', strtotime('-20 days')); $select = mysql_query("DELETE FROM cad_log WHERE log_data BETWEEN '$menos_20' AND '$menos_5' AND cod_ativa='0'");          if($select){         echo "OK";                           }else{ echo "nao"; } ?>

aparece Ok mas nao deleta nd no bd!!!
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca por intervalo

21-12-2011 19:31

Fiz um teste aqui e rodou sem problema.

$query=mysql_query("DELETE FROM tabela  WHERE data  BETWEEN '$menos_20' AND '$menos_5'"); if($query==TRUE){ echo "OK"; } else {  echo "nao";  } 

Verifica ai os valores do seu banco de dados se estão de acordo com a query. Inclusive o formato da data com -
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Busca por intervalo

21-12-2011 19:36

testei do seu jeito ai e nao foi tbm aki e oque tenho dentro do meu bd

fis que nem o teu teste e nao deletou nd ?
sera que oque tem de errado ? da o OK mas nao deleta nd !!!

os dados no bd tem algo errado

include('conexao/conecta.php'); $menos_5 = date('Y-m-d', strtotime('-5 days'));  $menos_20 = date('Y-m-d', strtotime('-20 days')); $query=mysql_query("DELETE FROM cad_log  WHERE log_data  BETWEEN '$menos_20' AND '$menos_5'"); if($query==TRUE){ echo "OK"; } else {  echo "nao";  } 


-- -- Estrutura da tabela `cad_log` --   CREATE TABLE IF NOT EXISTS `cad_log` (   `cod_log` INT(11) NOT NULL AUTO_INCREMENT,   `cod_ativa` CHAR(1) NOT NULL,   `cod_valida` VARCHAR(32) NOT NULL,   `log_senha` VARCHAR(32) NOT NULL,   `log_data` DATE NOT NULL,   `log_login` VARCHAR(20) NOT NULL,   `log_email` VARCHAR(100) NOT NULL,   PRIMARY KEY (`cod_log`) ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;   -- -- Extraindo dados da tabela `cad_log` --   INSERT INTO `cad_log` (`cod_log`, `cod_ativa`, `cod_valida`, `log_senha`, `log_data`, `log_login`, `log_email`) VALUES (1, '3', 'b555dead3ff1da3d170f22dfaeb69ca8', 'e10adc3949ba59abbe56e057f20f883e', '2011-12-21', 'admin', 'email@hotmail.com'), (2, '1', '88f406d492235c355df14081bbb535bb', 'e10adc3949ba59abbe56e057f20f883e', '2011-12-20', 'asd', 'asdf'), (3, '1', 'd6e24389e0af11303c495320fdf24cec', 'e10adc3949ba59abbe56e057f20f883e', '2011-12-22', 'asd', 'asd'), (4, '0', '564564', '456465', '2011-12-19', '654', '15646'), (5, '1', '456456', '564654', '2011-12-22', '465465', '65465'), (6, '0', '564564', '456465', '2011-12-19', '654', '15646'), (7, '1', '456456', '564654', '2011-12-22', '465465', '65465'), (8, '0', '564564', '456465', '2011-12-19', '654', '15646'), (9, '1', '456456', '564654', '2011-12-22', '465465', '65465'), (10, '0', '564564', '456465', '2011-12-19', '654', '15646'), (11, '1', '456456', '564654', '2011-12-22', '465465', '65465'), (12, '0', '564564', '456465', '2011-12-19', '654', '15646'), (13, '1', '456456', '564654', '2011-12-22', '465465', '65465'), (14, '1', '564564', '456465', '2011-12-19', '654', '15646'), (15, '1', '456456', '564654', '2011-12-22', '465465', '65465'), (16, '1', '564564', '456465', '2011-12-19', '654', '15646'), (17, '1', '456456', '564654', '2011-12-22', '465465', '65465'), (18, '1', '564564', '456465', '2011-12-19', '654', '15646'), (19, '1', '456456', '564654', '2011-12-22', '465465', '65465'), (20, '1', '564564', '456465', '2011-12-19', '654', '15646'), (21, '1', '456456', '564654', '2011-12-22', '465465', '65465'), (22, '1', '564564', '456465', '2011-12-19', '654', '15646'), (23, '1', '456456', '564654', '2011-12-22', '465465', '65465');

0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca por intervalo

21-12-2011 19:41

Baseado na data não vai deletar mesmo. Você tem os dias 19, 20, 21 e 22. Nenhuma dessas datas estão no intervalo de 5 dias anterior a hoje. Coloca uma data para dia 14 que você vai deletar o registro.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Busca por intervalo

21-12-2011 21:12

e agora funciono, obrigado!

$menos_5 = date('Y-m-d', strtotime('-5 days'));  $menos_20 = date('Y-m-d', strtotime('-20 days')); $select = mysql_query("DELETE FROM cad_log WHERE log_data BETWEEN '$menos_20' AND '$menos_5' AND cod_ativa='0'");          if($select){     echo "OK"; }    else{      echo "nao";  } 

ai se passa 5 dias da data e a conta nao tiver sido registrada ele apaga ela!
vlw
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca por intervalo

21-12-2011 22:49

:clap:
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 121

Busca por intervalo

01-01-2012 13:30

Então eu fiz assim

$menos_20 = date('d/m/Y', strtotime('-30 days')); $sql = "select * from $table WHERE data BETWEEN '$menos_20'"; 

Porém tinha que ser <= a - 30 não ?

Mais assim deu o erro:

You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near '' at line 2

O que pode ser ? E como seria para menor ou igual a - 30 dias.
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca por intervalo

01-01-2012 13:37

BETWEEN é para ser usado com 2 valores, e não um só.

Tenta o seguinte

SELECT * FROM $table WHERE DATA <= '$menos_20'

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 121

Busca por intervalo

01-01-2012 13:41

Então assim é como eu fazia antes, porém ele não mostra certo, ex: fiz assim e ele mostrou cadastro do dia 01/01/2012, vou tentar com dois valores.
0
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 121

Busca por intervalo

01-01-2012 13:53

Bom eu fiz assim e deu como eu queria.

        $menos_20 = date('d/m/Y', strtotime('-999 days'));         $menos_21 = date('d/m/Y', strtotime('-30 days')); $sql = "select * from $table WHERE data BETWEEN '$menos_20' AND '$menos_21'"; 

Desta forma ele está me mostrando cadastros com no máximo com 999 dias e no minimo 30 dias.
Fiz e deu tudo certinho.
Obrigado.
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca por intervalo

01-01-2012 13:57

Boa.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado