Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal.
Estou com grandes dificuldades para criar uma condição no SELECT.
Preciso criar algo deste tipo:
SELECT * FROM newsletter WHERE (calcado>='39' and calcado<='42') and (nasc<='1987-01-01' and nasc>='1986-01-01') and email!=''
Preciso que me retorne os cadastros que tiverem nascido entre 01-01-1986 e 01-01-1987 e que calçam entre 39 e 42.
Simples?!?!?!?!
pra mim ta impossivel.... RSRSRSRSRS
Sei que isso não é possivel da maneira que postei... mas é para vocês terem bem a nocão do que preciso.
Fico no aguardo.
tenta isso
SELECT * FROM NEWSLETTER WHERE CALCADO BETWEEN 39 AND 42 AND DATA BETWEEN CONVERT(DATETIME,'10/05/1986',103) AND CONVERT(DATETIME,'10/05/1987',103)
SELECT * FROM newsletter WHERE calcado between '39' and '42' and nasc between '1987-01-01' and '1986-01-01' and email is not null
Fala moçada....
Muito obrigado mesmo pela força.
É o seguinte:
Usei a seguinte condição = SELECT * FROM newsletter WHERE calcado BETWEEN '39' AND '42' AND nasc BETWEEN '1986-01-01' AND '1987-01-01' and email IS NOT NULL
Como todos vocês me disseram, porém... tenho duas pessoas cadastradas no banco de dados.
Uma com "calcado" 39 e "nasc" 1987-10-01
Outro com "calcado" 42 e "nasc" 1986-10-01
Só que ao fazer o select que me passaram ele retorna apenas um valor.
Só me traz o que tem "calcado" 42 e "nasc" 1986-10-01
Foi então que percebi que havia algo errado nisso... fiz uma gambiarra e adivinhem... deu certo.
Acrescentei um ano ao '1987-01-01'
Ficou 1988-01-01
Ai sim ele me retornou os dois valores
Não sei como explicar... vou adicionar alguns dados no db e ver como a condição reage.
Muito obrigado a todos... já já eu posto o que ocorreu
[edit]
Galera... muito obrigado mesmo
funcionou perfeitamente como haviam me passado... só o que precisei foi inserir alguns dados no db e alterar a data de nasc.
eu estava usando apenas o ano vindo do db já o mes e o dia eu usava o 01-01 para pegar todos.
comecei usar todos os dados vindos do db e deu certo ano-mes-dia, ai funcionou como uma luva.
Estou usando isso para newsletter de uma loja de calçados.
Muito obrigado mesmo.
[/edit]
>
Fala moçada....
Muito obrigado mesmo pela força.
É o seguinte:
Usei a seguinte condição = SELECT * FROM newsletter WHERE calcado BETWEEN '39' AND '42' AND nasc BETWEEN '1986-01-01' AND '1987-01-01' and email IS NOT NULL
Como todos vocês me disseram, porém... tenho duas pessoas cadastradas no banco de dados.
Uma com "calcado" 39 e "nasc" 1987-10-01
Outro com "calcado" 42 e "nasc" 1986-10-01
Só que ao fazer o select que me passaram ele retorna apenas um valor.
Só me traz o que tem "calcado" 42 e "nasc" 1986-10-01
Foi então que percebi que havia algo errado nisso... fiz uma gambiarra e adivinhem... deu certo.
Acrescentei um ano ao '1987-01-01'
Ficou 1988-01-01
Ai sim ele me retornou os dois valores
Meu caro, isso é uma questão de lógica de programação. Por exemplo, quero listar número que estejam ENTRE 10 e 14. Quais seriam? 11, 12, 13. Foi o mesmo que aconteceu com a condição da data no seu SELECT. Bem, esse meu post não irá ajudar muito, foi só pra dar uma luz aí :D Té mais!
Se você procura até 01/01/1987, não tem como retornar 10/01/1987.
No campo email você não esta colocando NULL não? Pois se tiver registrando NULL, você precisa usar: email IS NOT NULL.
Quanto a parte da data, está OK. Mas um BETWEEN poderia deixar mais simplificado. e.g. nasc BETWEEN '1986-01-01' AND '1987-01-01'
E para o campo calcado, ele é numérico ou string? Pois se for string você terá problema na comparação, pois sendo string '3' é maior que '22'.