Marcos Arantes Júnior Postado Abril 4, 2012 Denunciar Share Postado Abril 4, 2012 Banco de dados MySQLSei que para pesquisar em um campo data posso usar o seguinte código:SELECT * FROM teste WHERE data1 BETWEEN '2012-06-01' AND '2012-06-15' ou SELECT * FROM teste WHERE data1 >= '2012-06-01' AND data1<= '2012-06-15'Mas quando tenho 2 campos data com os nomes datainicial e datafinal como eu filtraria pelo intervalo dessas 2 datas?Ex: Cadastro preço de quartos em um intervalo de datas por temporada. Tabela datasdatemporada com os campos:iddatasdatemporada,dtinicial,dtfinal,temporadas_idtemporadatenho os seguintes registros cadastrados:1, '2012-04-15', '2012-04-30', 22, '2012-05-01', '2012-06-30', 23, '2012-07-01', '2012-07-31', 14, '2012-08-01', '2012-11-30', 25, '2012-12-01', '2012-12-31', 1-------------------------------------------------------------------------------------Eu quero filtrar pela data inicial e final.Eu digito a data de chegada(aqui no formato do BD já): 2012-06-11 edata de saída:2012-06-16--------------------------------------------------------------------------------------Na lógica teria que me retornar o intervalo 2, '2012-05-01', '2012-06-30', 2mas não retorna nada. Perceba que o intervalo está entre 2012-05-01 até 2012-06-30--------------------------------------------------------------------------------------Como ficaria o código SQL correto para esse caso, sendo o nome da tabeladatasdatemporada? Link para o comentário Compartilhar em outros sites More sharing options...
0 Marcelo_2 Postado Abril 5, 2012 Denunciar Share Postado Abril 5, 2012 C entendi bem, já tentou assim:select * from datasdatemporada where '2012-06-11' between dtinicial and dtfinal and '2012-06-16' between dtinicial and dtfinal;? Link para o comentário Compartilhar em outros sites More sharing options...
0 Marcos Arantes Júnior Postado Abril 5, 2012 Autor Denunciar Share Postado Abril 5, 2012 C entendi bem, já tentou assim:select * from datasdatemporada where '2012-06-11' between dtinicial and dtfinal and '2012-06-16' between dtinicial and dtfinal;?Agora o que você disse funcionou perfeitamente. Eu acho que era isso mesmo. É que tem que ser assim porque Quando vai cadastrar preço de quartos de hotel por temporada, tem que pegar as datas para saber se é alta,baixa ou alguma outra cadastrada e depois procurar na tabela de preços os preços que correspondem aquela temporada e assim multiplicar pelos dias escolhidos. Eu acho que é isso acima mesmo. Agora ele me retornou a linha que queria mesmo. Obrigado. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Marcos Arantes Júnior
Banco de dados MySQL
Sei que para pesquisar em um campo data posso usar o seguinte código:
ouMas quando tenho 2 campos data com os nomes datainicial e datafinal como eu filtraria pelo intervalo dessas 2 datas?
Ex: Cadastro preço de quartos em um intervalo de datas por temporada.
Tabela datasdatemporada com os campos:iddatasdatemporada,dtinicial,dtfinal,temporadas_idtemporada
tenho os seguintes registros cadastrados:
1, '2012-04-15', '2012-04-30', 2
2, '2012-05-01', '2012-06-30', 2
3, '2012-07-01', '2012-07-31', 1
4, '2012-08-01', '2012-11-30', 2
5, '2012-12-01', '2012-12-31', 1
-------------------------------------------------------------------------------------
Eu quero filtrar pela data inicial e final.
Eu digito a data de chegada(aqui no formato do BD já): 2012-06-11 e
data de saída:2012-06-16
--------------------------------------------------------------------------------------
Na lógica teria que me retornar o intervalo
2, '2012-05-01', '2012-06-30', 2
mas não retorna nada. Perceba que o intervalo está entre
2012-05-01 até 2012-06-30
--------------------------------------------------------------------------------------
Como ficaria o código SQL correto para esse caso, sendo o nome da tabela
datasdatemporada?
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados