Marcos Arantes Júnior Posted April 4, 2012 Report Share Posted April 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 to comment Share on other sites More sharing options...
0 Marcelo_2 Posted April 5, 2012 Report Share Posted April 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 to comment Share on other sites More sharing options...
0 Marcos Arantes Júnior Posted April 5, 2012 Author Report Share Posted April 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 to comment Share on other sites More sharing options...
Question
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 to comment
Share on other sites
2 answers to this question
Recommended Posts