Ir para conteúdo

POWERED BY:

Arquivado

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

turok

Selecionar registro com data da semana

Recommended Posts

Quero mostrar no site somente registros programados para serem mostrado em determinada data. Não estou conseguindo fazer a diferença.

 

ex: semana atual compreende de 2004-11-08 a 2004-11-14 .

 

- preciso retornar somente registro com ano e mês igual.

- preciso retornar somente os últimas registros desta semana (do dia 08 ao dia 11).

 

PHP [/tr][tr]SELECT *

FROM t_boletim

WHERE DATE ( NOW() ) - t_boletim_dta_envio <=7

[/tr]

 

- tentei usar uma função DATEDIFF que faz a diferença mas o mysql que uso é o 3.(...) e não funciona. http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para retornar o registro com o mes e ano atual:

select campo1,campodata from tabela   where (YEAR(campodata) = YEAR(now()))   and  (MONTH(campodata) = MONTH(now()))

- preciso retornar somente os últimas registros desta semana (do dia 08 ao dia 11).

Neste caso você sabe quais as datas ? Se souber coloca between <ini> and <fim>Se não explica melhor o problema com as semanas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste caso você sabe quais as datas ? Se souber coloca between <ini> and <fim>

Não sei. Preciso mostra os boletins da semana corrente.Os boletins ou mensagens são cadastrados no banco com uma data, qualquer data.ex: cadastrei uma mensagem para ser mostrada no site no dia 12-11-2004 (amanhã).mas no banco já tinham mensagens cadastradas para serem mostradas no dia 08-11, 09-11, 10-11. Datas que não são fixas, quem cadastra é que define. Preciso fazer um select de todas as mensagens que já foram visualizadas esta semana. No caso seria as mensagens com data: 08-11 a 11-11-04.espero não ter complicado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma pesquisada em http://dev.mysql.com/doc/mysql/en/Date_and..._functions.html.

 

Acredito que montando uma lógica junto com o php você consiga fazer isso.

 

você teria que pegar o dia de hoje (11) e saber qual dia da semana ele é (qui), daí ir retrocedendo esta data até chegar no domingo e aumentando até chegar no sábado, daí você terá as duas datas onde inicia e termina tua semana.

 

Joga estas datas dentro da select e pronto.

 

Tenta aí, qualquer fala amanhã.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensei em fazer isto mas deu erro de sintax, o erro está na parte de ( DAYOFWEEK ), mas não sei porque?

select * from t_bomdia_boletim  where (YEAR(t_boletim_dta_envio) = YEAR(now()))  and  ( MONTH ( t_boletim_dta_envio ) = MONTH ( now() ) )  and  ( DAYOFWEEK ( t_boletim_dta_envio ) ) = DAYOFWEEK ( now() ) )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui!!!!!!!!! com sua ajuda é claro!!!!!! :D

Valeu muito obrigado pela ajuda

select * from t_boletim  where (YEAR(t_boletim_dta_envio) = YEAR(now()))  and  ( MONTH ( t_boletim_dta_envio ) = MONTH ( now() ) )  and  ( DAYOFWEEK ( t_boletim_dta_envio ) <= DAYOFWEEK ( now() ) )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Potz ! Legal, mas <= dayofweek(now) não vai imprimir TODAS as datas menores ?Ou vai imprimir só desta semana ? Faz um teste e coloca uma data posterior no teu banco pra ver o que acontece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu um pq problema. Como tem o sinal de

<= DAYOFWEEK ( now() ) )
retorna todos os índices da semana que forem menor ou igual ao data data atual. Hoje por exemplo, dia 12, o índice é 6, então é retornado todas as datas que tiverem indices de 0 até 6. As datas do dia 14-11 e 15-11 não são desta semana, mas ele retorna por terem índices 0 e 1 respectivamente.

 

 

tabela das datas:

 

t_boletim_dta_envio

--------------------+

2004-11-11

2004-11-12

2004-11-14

2004-11-15

--------------------+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma pesquisada em http://dev.mysql.com/doc/mysql/en/Date_and..._functions.html.Acredito que montando uma lógica junto com o php você consiga fazer isso.você teria que pegar o dia de hoje (11) e saber qual dia da semana ele é (qui), daí ir retrocedendo esta data até chegar no domingo e aumentando até chegar no sábado, daí você terá as duas datas onde inicia e termina tua semana.Joga estas datas dentro da select e pronto.Tenta aí, qualquer fala amanhã.

É... eu imaginei que iria retornar todos os dias anteriores.Então volto a dizer o que disse antes... montar uma logica em php para pegar o inicio e fim da semana que você quer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora deu!!!!!!!

select * from tabelawhere ( YEAR( campo_dta_envio ) = YEAR(now())) # seleciona todas as datas com anos iguaisand  ( MONTH ( campo_dta_envio ) = MONTH ( now() ) ) # seleciona todas as datas com meses iguaisand  ( WEEK( campo_dta_envio ) = WEEK( NOW() ) ) # seleciona todas que pertencem a mesma semana

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.