Ir para conteúdo

POWERED BY:

Arquivado

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

regina

Exibir datas comemorativa

Recommended Posts

Bom dia,

 

qual é a melhor forma de armazenar as datas comemorativas no mysql sendo que elas deverão ser exibidas todo ano em sua proximidade.

A tabela está assim:

CREATE TABLE IF NOT EXISTS `datas_comemorativas` (

`id` int(3) NOT NULL AUTO_INCREMENT,

`data` date NOT NULL,

`ocasiao` varchar(50) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM

2011-07-20

Dia do Amigo

 

Este não não está exibindo.

 

Minha select

SELECT data,ocasiao FROM datas_comemorativas WHERE data BETWEEN DATE_SUB( DATE_FORMAT(CURDATE(),'%m-%d') , INTERVAL 1 DAY ) AND DATE_ADD( DATE_FORMAT(CURDATE(),'%m-%d') , INTERVAL 15 DAY) ORDER BY data ASC

 

agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - No teste que eu fiz tive que deixar o DATE_FORMAT para fora do SUBDATE pois estava retornando NULL outra coisa foi aplicar o DATE_FORMAT a data para que funcionasse o BETWEEN.

 

Da seguinte forma funcionou:

 

SELECT data,ocasiao FROM datas_comemorativas 
WHERE DATE_FORMAT(data,'%m-%d') BETWEEN 
DATE_FORMAT(SUBDATE( NOW() , INTERVAL 1 DAY ),'%m-%d') AND 
DATE_FORMAT(ADDDATE( NOW() , INTERVAL 15 DAY),'%m-%d') ORDER BY data ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse tipo de consulta nao ira dar certo pois no momento em que o ano virar você tera um problema

 

1230 (30 de dezembro) é maior que 115 (15 de janeiro) logo deveria vir invertido no between (no between o menor vem sempre antes do maior, senao nao funciona direito), mas se for invertido os valores no between você vai pegar o ano todo, de janeiro até dezembro...

 

 

sendo assim, você precisa sempre cadastrar todas as datas para todos os anos , o que é o correto ,pois tem uma penca de feriado móvel.

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.