Ir para conteúdo

POWERED BY:

Arquivado

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

stview

date_sub !!

Recommended Posts

Estou com um select meio chato aqui.Eu não posso usar duas vezes o date_sub no mesmo select?"... AND (p.Capa!='1' AND (p.Data_capa>=DATE_SUB(NOW(), INTERVAL ".date("w")." DAY)) AND p.Data_inicio>=DATE_SUB(NOW(), INTERVAL ".date("w")." DAY) AND (p.Sem_expirar='1' OR p.Data_fim>='$t_date')";Ele me resulta null .. mas existe 2 linahs que correspondem ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas.. o valor date("w")

está certo ?

 

porque "w" é uma representação numérica do dia da semana

 

 

função date()

http://jp2.php.net/manual/pt_BR/function.date.php

 

 

 

exemplo de uso da função DATE_SUB:

 

SELECT data FROM tabela WHERE data < DATE_SUB(NOW(), INTERVAL 1 hour);

retorna registros onde data é menor que a hora atual menos 1 hora.

 

 

referências:

 

http://dev.mysql.com/doc/mysql/en/Date_and_time_types.html

http://dev.mysql.com/doc/mysql/en/Date_and..._functions.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uso do date(w) para o seguinte:Eu quero que me mostre apenas noticias desta semana, verifico que dia da semana é hoje e busco as noticias com intervalo entre hoje e date(w) dias atrás ...Saca?Mas estou tendo problemas com o Date_Sub.Eu preciso fazer a verificação de intervalo de dias duas vezes no mesmo select, mas não consigo usar o date_sub duas vezes.Eu uso date_sub e faço outra verificação tipo data<$hoje e data>$domingo ... saca .. meio rustico ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que está errado então o modo como você quer filtrar.

 

o que eu entendi é

 

você quer selecionar registros onde a data seja diferente de domingo e estajam dentro da semana atual.

É isso??

 

 

date("w") como já citei retornará:

 

uma representação numérica do dia da semana

0 (para Domingo) a 6 (para Sábado)

 

referência: http://jp2.php.net/manual/pt_BR/function.date.php

 

você deveria fazer um cálculo antes

 

por exemplo

 

hoje é sexta-feira, dia 14 de Janeiro de 2005

sexta-feira, na função date("w") retorna o valor "5"

 

você deveria verificar qual a representação numérica do dia da semana

e fazer uma condicional segundo a crítica que vocÊ quer.

 

deveria usar o betweeen também..

 

exemplo

 

 

<?

$dif = date("w");

$final = "NOW()";

if($dif==0){ // se igual domingo

$dif = 6;

$final = "DATE_SUB(NOW(), INTERVAL 1 DAY)";

}

 

$sql = "SELECT data FROM tabela WHERE data BETWEEN DATE_SUB(NOW(), INTERVAL ".$dif." DAY) AND ".$final ;

?>

 

 

 

 

veja como ficaria a query sql

 

se hoje fosse domingo retornaria:

 

SELECT data,nome_usuario FROM usuarios_log WHERE data BETWEEN DATE_SUB(NOW(), INTERVAL 6 DAY) AND DATE_SUB(NOW(), INTERVAL 1 DAY);

 

mas hoje é sexta-feira, então retornará: (para os outros dias tb, exceto domingo)

 

SELECT data,nome_usuario FROM usuarios_log WHERE data BETWEEN DATE_SUB(NOW(), INTERVAL 6 DAY) AND NOW();

 

acho que é isso o que você quer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não cara ...Uso o DATE_SUB com a seguinte lógica:Hoje é sexta (date(w) = 5), e eu quero apenas noticias desta semana (domingo a sabado) uso então date_sub(now(), interval 5 day) ... ou seja entre hoje e 5 dias atras ...Isso eu tenho certeza que esta certo pq esta funcionando ...O problema é o seguinte, eu tenho 2 campos de datas, e eu não estou conseguindo usar o date_sub duas vezes no mesmo select, se eu usoapenas numa das diretrizes funciona .. se eu utilizo nas duas nãofuniona, e eu seique tem resultado positivo esta busca.Uma pergunta muito importante ... alguem aqui tem certificado mysql ou conhece quem o tenha?Eu nunca conheci ninguém que o tivesse, e considero o site da mysql muito fraco ... o conteúdo é muito superficial ... pra encontra algo concreto sobre o date_sub .. to procurando ate agora ...

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.