olá,
estou com uma dúvida referente a manipulação de datas:
o usuario irá entrar com um periodo (11/12/2007 a 14/12/2007, por exemplo) e tenho que colocar os dias da semana no relatório baseado nisso (terça, quarta, quinta).
Como que eu faço um select para dado um inicio e um fim, mostrar os dias da semana??
grato
Mexendo com datas
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Ter, 04 Dez 2007 2:12 pm
- Localização: São Carlos - SP
-
- Rank: DBA Sênior
- Mensagens: 365
- Registrado em: Ter, 24 Mai 2005 2:24 pm
- Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP
Araraquara - SP
você pode usar o nro do dia da semana, utilizando o TO_CHAR(sysdate,'D').
Dessa forma você terá o seguinte retorno.. :
1 - Domingo
2 - Segunda
3 - Terça
4 - Quarta
5 - Quinta
6 - Sexta
7 - Sabado..
ou você pode alterar o idioma da sua seção e no seu select pedir o dia da semana..
ex:
[]'s
Dessa forma você terá o seguinte retorno.. :
1 - Domingo
2 - Segunda
3 - Terça
4 - Quarta
5 - Quinta
6 - Sexta
7 - Sabado..
ou você pode alterar o idioma da sua seção e no seu select pedir o dia da semana..
ex:
SQL> ALTER SESSION SET nls_language='brazilian portuguese'
2 /
Session altered.
SQL> SELECT TO_CHAR( sysdate ,'d') nro_dia, TO_CHAR( sysdate ,'day') dia_semana FROM dual
2 /
N DIA_SEMANA
- -------------
3 terça-feira
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Ter, 04 Dez 2007 2:12 pm
- Localização: São Carlos - SP
vlw, mas como que adiciono um periodo a isso??
creio q tem que ser um FOR, mas seria o que no lugar de sysdate?
tipo:
select
for I in 11/12/2007..14/12/2007 loop
to_char (I, 'day')
end loop
from dual
(isso não deu certo)
??
creio q tem que ser um FOR, mas seria o que no lugar de sysdate?
tipo:
select
for I in 11/12/2007..14/12/2007 loop
to_char (I, 'day')
end loop
from dual
(isso não deu certo)
??
-
- Rank: DBA Sênior
- Mensagens: 365
- Registrado em: Ter, 24 Mai 2005 2:24 pm
- Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP
Araraquara - SP
Sim, teria q ter um FOR sim..
da uma olhada nesse exemplo..
[]'s
da uma olhada nesse exemplo..
SQL> DECLARE
2 v_DT_INI DATE := SYSDATE;
3 v_DT_FIM DATE := SYSDATE+4;
4 v_DIAS NUMBER;
5 BEGIN
6
7 EXECUTE IMMEDIATE ('ALTER SESSION SET nls_language=''brazilian portuguese'' ');
8
9 v_DIAS := v_DT_FIM-v_DT_INI;
10
11 FOR dt IN 0..v_DIAS-1 LOOP
12 dbms_output.put_line( TO_CHAR(v_DT_INI+DT,'DD/MM/YYYY')||', '||TO_CHAR(v_DT_INI+DT,'DAY')
);
13 END LOOP;
14
15 END;
16 /
11/12/2007, TERÇA-FEIRA
12/12/2007, QUARTA-FEIRA
13/12/2007, QUINTA-FEIRA
14/12/2007, SEXTA-FEIRA
PL/SQL procedure successfully completed.
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Ter, 04 Dez 2007 2:12 pm
- Localização: São Carlos - SP
vlw
-
- Rank: DBA Pleno
- Mensagens: 232
- Registrado em: Sex, 30 Mar 2007 7:26 pm
- Localização: Londrina - PR
Rafael O. Genaro
select dat_intervalo
, to_char(dat_intervalo, 'DAY','nls_date_language=portuguese')
from
(
select dat_inicio + d.rnum dat_intervalo - 1
from
(
select rownum rnum
from dual
connect by level <= trunc(dat_fim) - trunc(dat_inicio) + 1
)
)
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot] e 1 visitante