Bom dia Mestres...
Pessoal estou tendo que desenvolver um lista de valores contendo périodos.... exemplo abaixo.
...
16 jan 2008 a 15 fev 2008
16 fev 2008 a 15 março 2008
16 março 2008 a 15 abril 2008
e assim por diante...
Pensei em gravar esses períodos em uma tabela... mas será que existe outra forma mais viável para fazer isso?
Abração a todos
Período
-
- Rank: Programador Júnior
- Mensagens: 25
- Registrado em: Qua, 19 Dez 2007 9:10 am
- Localização: Rio de Janeiro RJ
Pensei rápido , mas tive a seguinte idéia, melhore-a :
DECLARE
v_peri NUMBER;
v_control NUMBER;
BEGIN
v_peri := 0;
v_contro := 1;
FOR v_control..(Numero de meses a frente que você quer)
LOOP
SELECT '16'
||TO_CHAR(TRUNC(SYSDATE + v_peri,'MM'),'/mm/yyyy')
||' a '
|| '15'
||TO_CHAR(TRUNC(SYSDATE + v_peri,'MM'),'/mm/yyyy')
FROM DUAL
v_peri := v_peri + 30;
END LOOP;
END;
-
- Rank: DBA Pleno
- Mensagens: 232
- Registrado em: Sex, 30 Mar 2007 7:26 pm
- Localização: Londrina - PR
Rafael O. Genaro
select to_char(dt_ini, 'dd mon yyyy', 'NLS_DATE_LANGUAGE=''PORTUGUESE''')
||' a '
||to_char(dt_ini, 'dd mon yyyy', 'NLS_DATE_LANGUAGE=''PORTUGUESE''') periodo
from ( select add_months(a.dt_referencia, rnum ) dt_ini
, add_months(a.dt_referencia, rnum + 1) - .00001 dt_fim
from ( select to_date(20080116, 'yyyymmdd') dt_referencia
from dual
) a -- Data inicial, deverá ser passada como parâmetro.
, ( select level rnum
from dual connect by level <= 15 -- Número de períodos.
) b
)
-
- Rank: DBA Pleno
- Mensagens: 232
- Registrado em: Sex, 30 Mar 2007 7:26 pm
- Localização: Londrina - PR
Rafael O. Genaro
ops.. ignore a resposta acima.. troquei um campo do resultado
segue a correção:
segue a correção:
select to_char(dt_ini, 'dd mon yyyy', 'NLS_DATE_LANGUAGE=''PORTUGUESE''')
||' a '
||to_char(dt_fim, 'dd mon yyyy', 'NLS_DATE_LANGUAGE=''PORTUGUESE''') periodo
from ( select add_months(a.dt_referencia, rnum ) dt_ini
, add_months(a.dt_referencia, rnum + 1) - .00001 dt_fim
from ( select to_date(20080116, 'yyyymmdd') dt_referencia
from dual
) a -- Data inicial, deverá ser passada como parâmetro.
, ( select level rnum
from dual connect by level <= 15 -- Número de períodos.
) b
)
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante