Como montar uma data em Oracle

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
rsalbano
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 76
Registrado em: Seg, 11 Jul 2011 9:55 am
Localização: Curitiba

Olá,

Estou com o seguinte problema:
Independente do dia do ano, eu preciso que uma data seja sempre 01/01/do ano corrente.
Exemplo: hoje é 13/01/2012, eu preciso em uma variável do tipo date com o valor 01/01/2012.
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Olá Rsalbano,

Para responder a sua pergunta, utilize as funções TO_DATE, TO_CHAR e SYSDATE

Selecionar tudo

Exemplo:

SQL> alter session set nls_date_format='DD/MM/RRRR';

SessÒo alterada.

SQL> SELECT TO_DATE('01/01/'||TO_CHAR(SYSDATE,'RRRR'),'DD/MM/RRRR') from dual;
 
TO_DATE('0
----------
01/01/2012
No exemplo acima:

- SYSDATE -> Traz a data corrente;
- TO_CHAR(SYSDATE,'RRRR') -> Traz o ano da data corrente. Uso a máscara RRRR (também poderia usar YYYY);
- TO_DATE('01/01/'TO_CHAR(...) ..) -> Concateno "/01/01/" com o ano obtido por T_CHAR(...);
- 'DD/MM/RRRR' -> Utilizo com TO_DATE, para informar ao oracle o formato da data (DD - dia/MM- mês/RRRR -> ano);

Espero ter podido responder sua dúvida,

Abraços,

Sergio Coutinho
rsalbano
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 76
Registrado em: Seg, 11 Jul 2011 9:55 am
Localização: Curitiba

Valeu, funcionou legal.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante