Como pesquisar registro mais proximo de acordo com a data em MYSQL
Pessoal tenho os seguintes registros no bd
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...
Porém esta pegando o registro seguinte ao registro que quero...
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é
Curtidas 0
Respostas
Marisiana Battistella
23/06/2014
Olá Patrique!
Está faltando incluir um join restringindo a data de término, vc só testou com a data de inicio...
Tentar fazer assim:
Não cheguei a testar esse código, qualquer coisa me avisa q eu revejo ele...
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...
GOSTEI 0
Patrique André
23/06/2014
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...
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.
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.
GOSTEI 0
Marisiana Battistella
23/06/2014
Agora não entendi o que vc quer fazer....
A tua data de termino não está cadastrada na tabela?
A tua data de termino não está cadastrada na tabela?
32 Sinhá Moça 1986-04-28 1986-11-15 6
GOSTEI 0
Marisiana Battistella
23/06/2014
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...
GOSTEI 0
Patrique André
23/06/2014
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.
Vou continuar aqui tentando e pesquisando a forma mais correta para oque estou querendo, agradeço a sua atenção. obrigado.
GOSTEI 0
Marisiana Battistella
23/06/2014
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...
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...
GOSTEI 0
William
23/06/2014
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???
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???
GOSTEI 0
William
23/06/2014
Supondo que você possui a data de término gravada já vou postar a instrução SQL:
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!
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!
GOSTEI 0