[Dica] Formato de Datas - Consulta rápida

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
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Códigos:

Selecionar tudo

AM   - AM ou PM   
CC   - Século 
D    - Dia da semana (1-7)
DAY  - Dia da semana ('SUNDAY') 
DD   - Dia do mês (1-31)
DDD  - Dia do ano
DY   - Dia da semana abreviado ('SUN')
FM   - Tira os blanks ou Zeros da esquerda
HH   - Hora do dia (0-12)
HH24 - Hora do dia (0-24)
MI   - Minutos da Hora
MM   - Mês com 2 dígitos
MON  - Mês abreviado ('NOV')
MONTH- Mês por extenso ('NOVEMBER')
PM   - AM ou PM
RR   - Ano com 2 dígitos - especial
RRRR - Ano com 4 dígitos
SS   - Segundos do minuto(0 - 59)
SSSSS- Segundos do dia
W    - Semana do Mês
WW   - Semana do Ano
YEAR - Ano por extenso
YY   - Ano com 2 dígitos
YYYY - Ano com 4 dígitos
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Outra coisa:

Nem sempre a gente sabe quais as configurações do banco que o nosso programa vai ser executado. Por exemplo: Tenho que mostrar o dia da semana ao usuário por extenso:

Selecionar tudo

SQL> SELECT TO_CHAR( SYSDATE , 'DY' ) FROM DUAL;

TO_
---
FRI

SQL> SELECT TO_CHAR( SYSDATE , 'DY' , 'NLS_DATE_LANGUAGE=PORTUGUESE' ) FROM DUAL;

TO_
---
SEX
Como podem ver, o banco está em ingles. Mas eu forço a consulta pra ela sair em português - sem me preocupar em alterar nenhuma configuração! :-o
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Veja como não é preciso Upper ou INITCAP para ter a resposta em maiúsculo ou minúsculo:

Selecionar tudo

SQL> SELECT TO_CHAR( SYSDATE , 'DY' ) FROM DUAL;

TO_
---
TER

SQL> SELECT TO_CHAR( SYSDATE , 'Dy' ) FROM DUAL;

TO_
---
Ter

SQL> SELECT TO_CHAR( SYSDATE , 'dy' ) FROM DUAL;

TO_
---
ter
Isso vale para os outros formatos!
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Já que o assunto é formatos, aí vão mais algumas coisas interessantes:

Tricks

Selecionar tudo

scott#PO7::SQL>alter session set NLS_NUMERIC_CHARACTERS=',.';
scott#PO7::SQL>alter session set NLS_CURRENCY='R$';
scott#PO7::SQL>column SAL format L99G999G999D09
fabianaguimaraes
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Seg, 27 Ago 2012 4:09 pm

Se eu quiser que

Selecionar tudo

v_mês_ext := (to_char(Sysdate,'Month','nls_date_language =''brazilian portuguese'''));
Ao invés de receber sysdate, receba um parametro?
Posso colocar o parametro no lugar de sysdate?

Quero eu mesma digitar o mês, e não pegar o mês do meu PC.

COmo seria feito isso?
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Basta passar uma data como parâmetro:

Selecionar tudo

v_mês_ext := (to_char( to_date('01/05/2012', 'dd/mm/yyyy'),'Month','nls_date_language =''brazilian portuguese'''));
ou
declare
  v_data date;
begin
  v_data := to_date('01/09/2012', 'dd/mm/yyyy');
  v_mês_ext := (to_char( v_data ,'Month','nls_date_language =''brazilian portuguese'''));
end;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes