Luan94 0 Denunciar post Postado Setembro 18, 2013 Preciso fazer o select dos moradores que completam 4 anos nos proximos 6 meses, porém estou tendo algumas dificuldades com a condição do select(where). Depois de pesquisar algumas funções consegui chegar a tals resultado: AND (SELECT MONTHS_BETWEEN(SYSDATE, DATA_DO_MORADOR) FUNCTION_MONTH_BETWEEN FROM DUAL) >= 42 AND (SELECT MONTHS_BETWEEN(SYSDATE, DATA_DO_MORADOR) FUNCTION_MONTH_BETWEEN FROM DUAL) <= 48; A ídeia e a seguinte. Faço a comparação de meses entre a data do sistema(sysdate) e o campo que estou usando, se o numero de meses forem maior que 42 e menor que 48, ele me retorna os registros, porém não esta aparecendo nada. E outro problema e que prociso dos moradores dos proximos 6 meses, e esta condição não atende isso. Se alguém souber como fazer isso de um jeito mais simples ou de outro jeito agradeço! Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 18, 2013 -- IDADE FLOOR(MONTHS_BETWEEN(SYSDATE,DATA_DO_MORADOR)/12) --TESTE AND (FLOOR(MONTHS_BETWEEN(SYSDATE,DATA_DO_MORADOR)/12) = 4 OR FLOOR(MONTHS_BETWEEN(ADD_MONTHS(SYSDATE,6),DATA_DO_MORADOR)/12) = 4) TENTE ISTO Compartilhar este post Link para o post Compartilhar em outros sites
Luan94 0 Denunciar post Postado Setembro 18, 2013 Motta, eu fiz assim. Tem como você me dizer se do jeito que eu fiz também está certo ou se e melhor usar o código que você mandou? Obrigado pela ajuda. ((SELECT MONTHS_BETWEEN((ADD_MONTHS(SYSDATE, + 6)), DATA_DO_MORADOR) FUNCTION_MONTH_BETWEEN FROM DUAL) >= 42 AND (SELECT MONTHS_BETWEEN((ADD_MONTHS(SYSDATE, + 6)), DATA_DO_MORADOR) FUNCTION_MONTH_BETWEEN FROM DUAL) <= 48) Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 19, 2013 Não entendi este select na DUAL , faça direto tipo : select * from moradores where (FLOOR(MONTHS_BETWEEN(SYSDATE,DATA_DO_MORADOR)/12) = 4 OR FLOOR(MONTHS_BETWEEN(ADD_MONTHS(SYSDATE,6),DATA_DO_MORADOR)/12) = 4) Compartilhar este post Link para o post Compartilhar em outros sites