Tutorial para Oracle DBA
On Janeiro 1, 2022 by adminDate Functions and Operators.
Para ver a data e hora do sistema utilize as seguintes funções :
CURRENT_DATE :retorna a data corrente no fuso horário da sessão, em um valor no calendário gregoriano do tipo datatype
DATE
SYSDATE :Retorna a data e hora corrente.
SYSTIMESTAMP :A função SYSTIMESTAMP retorna a data do sistema, incluindo segundos fracionários e fuso horário
da base de dados. O tipo de retorno é TIMESTAMP COM ZONA HORÁRIA.
SYSDATE Exemplo
Para ver a data e hora atual do sistema, dê a seguinte consulta.
selecione a data do sistema dual;
SYSDATE
——-
8-AUG-03
O formato em que a data é exibida depende do parâmetro NLS_DATE_FORMAT.
Por exemplo, defina o NLS_DATE_FORMAT para o seguinte formato
alter session set NLS_DATE_FORMAT=’DD-MON-YYYYY HH:MIpm’;
Em seguida, dê a seguinte declaração
selecione a data do sistema dual;
SYSDATE
——————
8-AUG-2003 03:05pm
A configuração padrão do NLS_DATE_FORMAT é DD-MON-YY
CURRENT_DATE Example
Para ver a data e hora atual do sistema com fuso horário use a função CURRENT_DATE
ALTER SESSION SET TIME_ZONE = ‘-4:0’;
ALTER SESSION SET NLS_DATE_FORMAT = ‘DD-MON-YYYYY HH24:MI:SS’;
SELECIONAR SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
SESSIONTIMETIMEZONE CURRENT_DATE
————— ——————–
-04:00 22-APR-2003 14:15:03
ALTER SESSION SET TIME_ZONE = ‘-7:0’;
SELECIONAR SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
SESSIONTIMEZONE CURRENT_DATE
————— ——————–
-07:00 22-APR-2003 09:15:33
SYSTIMESTAMP Exemplo
Para ver a data e hora actual do sistema com fracções de segundos com fuso horário dê a seguinte indicação
seleccionar o carimbo systimestamp de dual;
SYSTIMESTAMP
——————————-
22-APR-03 08.38.55.538741 AM -07:00
DATE FORMAT MODELS
Para traduzir a data para uma string de formato diferente, você pode usar a função TO_CHAR com formato de data. Por exemplo, para ver o dia atual você pode dar a seguinte consulta
Select to_char(sysdate,’DAY’) “Today” FROM DUAL;
TODAY
——-
THURSDAY
Para traduzir um valor de caractere, que está num formato diferente do formato de data padrão, para um valor de data você pode usar a função TO_DATE com formato de data para data
Como este modelo de formato “DAY” existem muitos outros modelos de formato de data disponíveis no Oracle. A tabela seguinte lista os modelos de formato de data.
FORMATO |
MEANING |
||
D |
Dia da semana |
||
D |
Dia do mês |
||
DDD |
>
Dia do ano |
||
DIA |
>
Dia completa para ex. Segunda-feira’, ‘Terça-feira’, ‘Quarta-feira’ |
||
DY |
Dia em três letras para ex. MON’, ‘TUE’,FRI’ |
||
W |
>
Semana do mês > |
||
WW |
Semana do ano |
||
MM |
Mês em dois dígitos (1-Jan, 2-Fev,…12-Dez) |
||
MON |
Mês em três caracteres como “Jan”, “Fev”, “Apr” |
||
MÊS |
Mês completo como “Janeiro”, “Fevereiro”, “Abril” |
||
RM |
Month in Roman Characters (I-XII, I-Jan, II-Fev,…XII-Dez) |
||
Q |
>
Quarto do mês |
||
YY |
Últimos dois dígitos do ano. |
HH |
Horas em formato de 12 horas |
HHH12 |
Horas em formato de 12 horas |
||
HH24 |
Horas no formato 24 horas |
||
MI |
Minutos |
||
SS |
Segundos > |
||
FF |
Fractional Seconds |
||
SSSSS |
Milliseconds |
||
J |
Julian Day i.e Dias desde 1º-Jan-4712BC até à data limite |
||
RR |
Se o ano for inferior a 50 Assume o ano como século 21ST. Se o ano for maior que 50 então assume o ano do Século 20. |
sufixos
>
TH |
Retorna th, st, rd ou nd de acordo com o número principal como 1º , 2º 3º 4º |
SP |
>
Digite o número inicial |
AM ou PM |
Retorna AM ou PM de acordo com o tempo |
SPTH |
Retorna o número ordinal soletrado. Para. Exemplo Primeiro, Quarto |
Por exemplo para ver a data de hoje no seguinte formato
Sexta, 7 de Março, 2014
Dê a seguinte declaração
Selecionar para_char(sysdate,’Day, ddth Month, yyyy’) “Today” de dual;
TODAY
————————
Sexta, 7 de Março, 2014
Por exemplo, você quer ver as datas de contratação de todos os funcionários no seguinte formato
Sexta, 8 de Agosto, 2003
Então, faça a seguinte consulta.
selecione para_char(hire_date,’Day, ddth Month, yyyy’) de emp;
TO_DATE Example
To_Date function is used to convert strings into date values. Por exemplo, você quer ver o que era o dia em 15-ago-1947. A função to_date é usada para primeiro converter a string em valor de data e depois passar esse valor para a função to_char para extrair o dia.
selecione para_char(to_date(’15-ago-1947′,’dd-mon-yyyy’),’Day’)
de_duplo;
TO_CHAR(
——–
Sexta-feira
Para ver quantos dias passaram desde 15-ago-1947, faça a seguinte consulta
selecione sysdate-to_date(’15-ago-1947′,’dd-mon-yyyyy’) a partir do dual;
Agora queremos ver que data ocorrerá após 45 dias a partir de agora
selecionar sysdate+45 a partir do dual;
SYSDATE
——-
06-JUN-2003
ADD_MONTHS
Para ver qual data ocorrerá após 6 meses, podemos usar a função ADD_MONTHS
Selecionar ADD_MONTHS(SYSDATE,6) a partir do dual;
ADD_MONTHS
———-
22-OCT-2003
MONTHS_BETWEEN
Para ver quantos meses se passaram desde uma determinada data, use a função MONTHS_BETWEEN.
Por exemplo, para ver quantos meses se passaram desde 15-ago-1947, dê a seguinte consulta.
selecione meses_entre(sysdate,to_date(’15-ago-1947′))
from dual;
Months
——
616.553
Para eliminar o valor decimal utilize a função trunc(meses_entre(sysdate,to_date(’15-ago-1947′)))
de dual;
Meses
——
616
LAST_DAY
Para ver a última data do mês de uma determinada data, use a função LAST_DAY.
Selecionar LAST_DAY(sysdate) de dual;
LAST_DAY
——–
31-AUG-2003
NEXT_DAY
Para ver quando um dia em particular está chegando, use a função NEXT_DAY.
Para ver quando o próximo sábado está chegando, dê a seguinte consulta
selecione next_day(sysdate) from dual;
NEXT_DAY
———–
09-AUG-2003
EXTRACT
Uma função EXTRACT datetime extrai e retorna o valor de um campo de data/hora especificado de uma expressão de data/hora ou valor de intervalo. Quando se extrai uma REGIÃO_TEMPOZONA ou TIMEZONE_ABBR (abreviatura), o valor retornado é uma string contendo o nome ou abreviatura apropriada do fuso horário
A sintaxe da função EXTRACT é
EXTRACT ( ANO / MÊS / SEMANA / DIA / HORA / MINUTO / TIMEZONE FROM DATE)
Exemplo
A seguir demonstra-se o uso da função EXTRACT para extrair ano da data atual.
Select extract(year from sysdate) from dual;
EXTRACT
——-
2003
Deixe uma resposta