Pessoal,
Gostaria de fazer um select que me retornasse todos os anos entre uma data X e a data de hoje.
Há alguma maneira de se fazer isso com um simples select?
Obrigado
Pessoal,
Gostaria de fazer um select que me retornasse todos os anos entre uma data X e a data de hoje.
Há alguma maneira de se fazer isso com um simples select?
Obrigado
SELECT TO_NUMBER(TO_CHAR(SYSDATE,'YYYY')) - TO_NUMBER(TO_CHAR(TO_DATE('01/01/1978','DD/MM/YYYY'),'YYYY')) FROM DUAL
Pelo que entendi ele nao quer “QUANTOS” anos ha entre duas datas e sim quais os anos!!!
select distinct(to_char(seuCampoData, 'yyyy')) ano from suaTabela
where seuCampoData between dataIni and dataFim
[quote=marcoantoniorocha]Pessoal,
Gostaria de fazer um select que me retornasse todos os anos entre uma data X e a data de hoje.
Há alguma maneira de se fazer isso com um simples select?
Obrigado[/quote]
Retornar os anos não dá, mas pode retornar a diferença das datas em meses. Com essa informação é só dividir por 12 pra saber a diferença em anos.
Nada que um bom exemplo não faça. Quando a pergunta é difícl de formular, o melhor é dar um exemplo do que se quer.
Digamos que ele tenha algo como:
Data X = 12/12/1912
Hoje = 25/04/2006
Se o marcoantoniorocha (que não deve ser o comentarista político, http://marcoantoniorocha.zip.net/ ) quiser 2006 - 1912 = 94 é uma coisa.
Se ele quiser a seqüência 1912, 1913, … 2005, 2006 é outra coisa.
Se ele quiser algo como 1920, 1949, … 2004, 2006, que seriam os anos relativos apenas a dados contidos em uma coluna de uma query, é outra coisa ainda.
O que você quer, afinal de contas?
Nossa… que bagunça por causa de uma diferença de datas… talvez o amigo ali em cima(RodrigoSol) até já tenha feito…
E eu que tô apanhando por causa de ROWCOUNT?
Aliás esse oracle é bem esquisito… porque quando eu crio um cursor e peço o ROWCOUNT dele, ele sempre me retorna a contagem ATUAL de registros?
Seria bem mais prático ele informar o COUNT(*) do cursor, assim como um Resultset tem o “EOF”, porque assim, quando eu desse um OPEN nele, se o ROWCOUNT fosse = 0, eu já saberia que nessa consulta não há registros, e já poderia fechá-lo.
O número do registro eu posso obter por outros meios…
Ué, mas quando vc abre um cursor o oracle apenas resolveu seu plano de execução e deu o FETCH em algumas linhas… Portanto ele ainda não conhece a quantidade total de registros… isso vai ocorrer quando ele chegar em um NO DATA FOUND.
Sim, mas realmente eu ainda não estou acostumado a isso. Pra mim, o cursor, assim que aberto, já tinha que ter pelo menos a informação de quantos registros ele possui.
Mas isso acho que é outra história, estou desenvolvendo com PL/SQL diretamente, fazendo páginas de internet com PL, usando as variáveis do PL, tudo em pl… essa merda não tem nem session.
Não vejo a hora disso migrar pro java, espero que fique mais eficiente… pl/sql [color=red]somente[/color] é muito improdutivo.
[quote=balarini]Sim, mas realmente eu ainda não estou acostumado a isso. Pra mim, o cursor, assim que aberto, já tinha que ter pelo menos a informação de quantos registros ele possui.
Mas isso acho que é outra história, estou desenvolvendo com PL/SQL diretamente, fazendo páginas de internet com PL, usando as variáveis do PL, tudo em pl… essa merda não tem nem session.
Não vejo a hora disso migrar pro java, espero que fique mais eficiente… pl/sql [color=red]somente[/color] é muito improdutivo.[/quote]
Do jeito que vc ta falando parece que vc trabalha com Delphi, onde vc tem os recordCount dos dataset’s!!, mas não vai esperando muito do java não em, pois os ResultSet’s tambem não um count, para saber quantos registros ele possui!!!
PL é ótimo para rotinas de ETL e processamento em lote. Pro resto é gostar muito da Oracle pra encarar.