cPraValer 0 Denunciar post Postado Agosto 30, 2011 Tenho uma tabela com três colunas: nome, data e periodo. As datas são diversas: 27/08/2011, 30/08/2011, 02/09/2011, 18/09/2011.. e cada período informa quando o registro deve ser exibido: todo domingo, toda sexta, primeiro dia do mês e último dia do mês. Jose | 27/08/2011 | todoDomingo Maria | 30/08/2011 | todaSexta Ricardo | 02/09/2011 | primeiroDiaMes Cassia | 19/09/2011 | ultimoDiaMes Como fazer uma consulta MySQL para retornar o NOME de acordo com o período informado? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Agosto 30, 2011 Não entendi, dê um exemplo de saída. Compartilhar este post Link para o post Compartilhar em outros sites
cPraValer 0 Denunciar post Postado Agosto 30, 2011 Os registros são cadastrados, e a partir da data informada, eles só podem ser exibidos nos dias informados no campo 'periodo', exemplo: Maria só será exibida aos domingos, a partir do dia 30/08/2011 (todo domingo após esta data) Ricardo só será exibido no primeiro dia de cada mês, a partir de 02/09/2011 (ou seja, será exibido dia 01/10/2011, 01/11/2011, 01/12/2011 etc) Cassia só será exibida no último dia de cada mês, a partir de 19/09/2011 (ou seja, 30/09/2011, 31/10/2011, 30/11/2011 etc) Na consulta, verificar se o dia é segunda, terça, quarta, quinta... e pegar só o registro que for marcado no campo período, e exibir, levando em conta a data de publicação. Dentro da própria consulta sql, verificar se é o primeiro/último dia do mês, se a data atual é igual ou maior que a data informada na tabela, e exibir o registro correspondente. Lí sobre LAST_DAY, DAYOFWEEK, DATEDIFF, mas não consegui bolar uma consulta que faça o que preciso. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Agosto 30, 2011 Ao meu ver, ficaria assim: SELECT IF( CURRENT_DATE() = LAST_DAY( `data` ) OR -- Se a data corrente for o último dia do mês , ou CURRENT_DATE() = DATE_FORMAT( NOW() , '%Y-%m-01' ) , -- Se a data corrente for o primeiro dia do mês IF( CURRENT_DATE() <= `data` , `data` , -- Se a data corrente for maior ou igual que a data na tabela '' ) , -- Else ( Segundo IF ) '' -- Else ( Primeiro IF ) ) AS `Registro` FROM `clientes`; Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 30, 2011 DAYOFWEEK(date) Returns the weekday index for date (1 = Sunday, 2 = Monday, …, 7 = Saturday). These index values correspond to the ODBC standard. Fonte TROQUE O todoDomingo da tabela por 1 por exemplo, n query basta. WHERE DAYOFWEEK(DATA) = '1' O resto segue +ou- a mesma lógica. Compartilhar este post Link para o post Compartilhar em outros sites
cPraValer 0 Denunciar post Postado Agosto 31, 2011 Obrigado pelas respostas, vou conferir e retorno. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites