GARANTIR DESCONTO

Fórum Como pesquisar registro mais proximo de acordo com a data em MYSQL #483424

23/06/2014

0

Pessoal tenho os seguintes registros no bd

32	Sinhá Moça	1986-04-28	1986-11-15	6
31	De Quina pra Lua	1985-10-21	1986-04-26	6
30	A Gato Comeu	1985-04-15	1985-10-19	6
29	Livre para Voar	1984-09-17	1985-04-13	6
28	Amor com Amor se Paga	1984-03-19	1984-09-14	6
27	Voltei pra Você	1983-10-10	1984-03-16	6
26	Pão Pão, Beijo Beijo	1983-03-28	1983-10-08	6
25	Paraíso	1982-08-23	1983-03-26	6
24	O Homem Proibido	1982-03-01	1982-08-21	6
23	Terras do Sem Fim	1981-11-16	1982-02-27	6


eu tenho uma tabela aonde aponto a data inicio e outra aponta a data termino de uma novela... vamos super que tenha uma novela que comece em 1986-04-28 e termina em 1986-11-15 dai eu gostaria que quando fosse procurado pela data 1986-04-30 identificasse que nessa data esta novela estava sendo transmitida, ou seja... o mysql atraves da data inicio verificaria qual novela estava passando de acordo com a data colocada pelo usuário.

Duvida nisso.. já tentei isso...

Select * from tbl_novelas where inicio >= '"& datamysql &"'


Porém esta pegando o registro seguinte ao registro que quero...
Patrique André

Patrique André

Responder

Posts

23/06/2014

Marisiana Battistella

Olá Patrique!
Está faltando incluir um join restringindo a data de término, vc só testou com a data de inicio...
Tentar fazer assim:
Select * 
from tbl_novelas
where data_inicio >= '"& datamysql &"'
and data_termino <= '"& datamysql &"' 

Não cheguei a testar esse código, qualquer coisa me avisa q eu revejo ele...
Responder

Gostei + 0

24/06/2014

Patrique André

Boa noite Marisiana, é ai que esta, não não sei qual a data termino, fiz um up e agora estou fazendo da seguinte maneira...

Set AC = Conn.Execute("SELECT * FROM tbl_novelas WHERE termino BETWEEN '"& datamysql &"' AND (SELECT MAX(inicio) FROM tbl_novelas) AND horario = '6'")


Funciona porém se existir uma data que não tenha no registro... ele pega o primeiro.... e eu gostaria que se não estivese no periodo de data... ou inicio ou termino... não apresentasse nada.
Responder

Gostei + 0

24/06/2014

Marisiana Battistella

Agora não entendi o que vc quer fazer....
A tua data de termino não está cadastrada na tabela?
32  Sinhá Moça  1986-04-28  1986-11-15  6
Responder

Gostei + 0

24/06/2014

Marisiana Battistella

eu tenho uma tabela aonde aponto a data inicio e outra aponta a data termino de uma novela... vamos super que tenha uma novela que comece em 1986-04-28 e termina em 1986-11-15 dai eu gostaria que quando fosse procurado pela data 1986-04-30 identificasse que nessa data esta novela estava sendo transmitida, ou seja... o mysql atraves da data inicio verificaria qual novela estava passando de acordo com a data colocada pelo usuário.


Você precisa selecionar as novelas onde a data de inicio seja maior ou igual a data informada e a data de termino seja menor ou igual a data informada.
Se a data informada estiver entre essas duas datas é pq a novela está sendo transmitida...
Responder

Gostei + 0

24/06/2014

Patrique André

Sim entendi essa parte Marisiana, porém não tem como eu chutar um término, eu gostaria que ao colocar uma data o mysql identificasse em qual novela o usuário se enquadra, no exemplo anterior eu consegui fazer eu até conseguiria fazer para não me mostrar os resultados quando não existisse referencia para determinada data, porém não quero fazer isso via code pois seria uma gambi, acredito que via instrução no mysql eu consiga filtrar e mostrar os resultados que quero.

Vou continuar aqui tentando e pesquisando a forma mais correta para oque estou querendo, agradeço a sua atenção. obrigado.
Responder

Gostei + 0

24/06/2014

Marisiana Battistella

Ok... Como quiser!
Eu tinha entendido que todas as novelas têm uma data de término cadastrada em uma tabela e nesse caso o select que te passei funcionaria...
Responder

Gostei + 0

29/06/2014

William

Olá Patrique, primeiro vamos organizar as informações:

Nesse ponto você afirma que possui a data de término gravada em uma determinada tabela!

eu tenho uma tabela aonde aponto a data inicio e outra aponta a data termino de uma novela...


Já nesse ponto você afirma que NÃO sabe a data de término!

Boa noite Marisiana, é ai que esta, não não sei qual a data termino


Antes que nós possamos tentar te ajudar precisamos saber o cenário real da sua base de dados, você possui ou não a data de término gravada???
Responder

Gostei + 0

29/06/2014

William

Supondo que você possui a data de término gravada já vou postar a instrução SQL:

SELECT
    *
FROM
   TAB_NOVELA
WHERE
    data_inicio <= '1986-04-28' and data_termino >= '1986-04-30'


Repare que houve uma inversão de operadores lógicos, a condição é que a data_inicio seja menor/igual a data_usuario e a data_termino seja maior/igual a data_usuario.

Você está fazendo uma pesquisa por valor aproximado, se eu colocar a condição como data_inicio sendo maior/igual a data_usuario estou matando as datas de novela que iniciam antes da data_usuario, o mesmo ocorre com a data_termino, se a condição for data_termino menor/igual data_usuario estarei matando as novelas que terminam depois da data informada pelo usuário.

O seu objetivo pelo o que entendo é saber qual novela está sendo transmitida na data atual, por isso existe um range de valores a serem pesquisados!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar