Mês e Ano

6 respostas
vando

ai galera?Eu tenho um campo mes_refer e ano_refer em minha tabela…bom
eu queria saber como eu faço para pegar todos os resultados que sejam menor que esse mes_refer e ano_refer…
Lembrando que isso tem que ser tratado como uma data…

6 Respostas

cv1

Pq nao tratar datas como longs? Fica muuuuuuuuito mais pratico :smiley:

Bom, dito isto:

SELECT …
WHERE
funcaoQueTeuBancoDeDadosUsaPraCriarDates(‘01’, mes_refer, ano_refer)
< funcaoQueTeuBancoDeDadosUsaPraCriarDates(…

urubatan

ou então, multiplica o ano por 100, soma o mes, e ve qual o menor valor :slight_smile:

tipo:

WHERE &#40;ano_refer * 100&#41; + mes_refer &gt; meuParametroComOMesmoCalculoJaFeito

cv1

Gambiarra macumbenta nojenta cheia de meleca verde que brilha no escuro detected…

vando

[i]

“urubatan”:
ou então, multiplica o ano por 100, soma o mes, e ve qual o menor valor :slight_smile:

tipo:

WHERE &#40;ano_refer * 100&#41; + mes_refer &gt; meuParametroComOMesmoCalculoJaFeito

[/i]
Isso ai funciona?

smota

Só pra encher o saco faz o teste de mesa :shock:

Isso dá no mesmo que concatenar ano+mês, entonces se seu campo for string use concatenação ao invés do cálculo pra fazer essa Gambiarra macumbenta nojenta cheia de meleca verde que brilha no escuro :lol:

urubatan

até não acho que seja gambiarra, ja que provavelmente ira rodar mais rapido que uma função para criar datas a partir dos dois campos, existe a remota possibilidade de o banco de dados utilizar indices nesta operação (ja que esta sendo realizada uma operação matematica simples, e no caso de uma chamada de função ele vai ter obrigatoriamente de rodar um tablescan) e principalmente, por que esta solução que eu apresentei, funciona em qualquer banco de dados, enquanto chamarAFunçãoDeCriarDatasDoBanco faz você morrer abraçado no banco de dados, sem ter ganho nenhum em performance.

Criado 29 de março de 2004
Ultima resposta 29 de mar. de 2004
Respostas 6
Participantes 4