Descrição:
Estas são algumas das primcipais funções do Oracle para tratamento e formatação de data e hora, formatação de números e manipulação de caracteres, e seus respctivos exemplos de uso e aplicações práticas em consultas SQL para cada função.
Funções de Data e Hora
- TO_DATE(string): Converte uma string em uma data.
SELECT TO_DATE('2006-07-17 12:15:45', 'yyyy-mm-dd hh24:mi:ss')+1 FROM dual;
- SELECT SYSDATE: Retorna a data e hora atuais do sistema.
SELECT SYSDATE FROM DUAL;
- ADD_MONTHS(SYSDATE,1): Adiciona meses a uma data.
SELECT ADD_MONTHS(SYSDATE, 1) FROM DUAL;
- CURRENT_DATE: Retorna a data e hora atuais do sistema na sessão do usuário.
SELECT CURRENT_DATE FROM DUAL;
- LAST_DAY(SYSDATE): Retorna o último dia do mês de uma data.
SELECT LAST_DAY(SYSDATE) FROM DUAL;
- MONTHS_BETWEEN('31/01/2009','31/01/2010'): Calcula a diferença em meses entre duas datas.
SELECT MONTHS_BETWEEN('31/01/2009', '31/01/2010') TOT_MESES FROM DUAL;
- TRUNC(SYSTIMESTAMP AT TIME ZONE 'America/Sao_Paulo' -30): Trunca uma data ou timestamp para um valor específico.
SELECT TRUNC(SYSTIMESTAMP AT TIME ZONE 'America/Sao_Paulo' -30) FROM DUAL;
- EXTRACT(YEAR|MONTH|DAY|HOUR|MINUTE|TIMEZONE FROM DATE|TIMESTAMP): Extrai partes de uma data ou timestamp.Extrai partes de uma data ou timestamp.
SELECT EXTRACT(YEAR FROM DATE '2012-05-01') FROM dual;
SELECT EXTRACT(MONTH FROM DATE '2012-05-01') FROM dual;
SELECT EXTRACT(DAY FROM DATE '2012-05-01') FROM dual;
SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual;
SELECT EXTRACT(MONTH FROM SYSDATE) FROM dual;
SELECT EXTRACT(DAY FROM SYSDATE) FROM dual;
SELECT EXTRACT(YEAR FROM SYSTIMESTAMP) FROM dual;
SELECT EXTRACT(MONTH FROM SYSTIMESTAMP) FROM dual;
SELECT EXTRACT(DAY FROM SYSTIMESTAMP) FROM dual;
SELECT EXTRACT(HOUR FROM SYSTIMESTAMP) FROM dual;
SELECT EXTRACT(MINUTE FROM SYSTIMESTAMP) FROM dual;
SELECT EXTRACT(SECOND FROM SYSTIMESTAMP) FROM dual;
SELECT EXTRACT(TIMEZONE_HOUR FROM SYSTIMESTAMP) FROM dual;
SELECT EXTRACT(TIMEZONE_MINUTE FROM SYSTIMESTAMP) FROM dual;
SELECT EXTRACT(TIMEZONE_REGION FROM SYSTIMESTAMP) FROM dual;
SELECT EXTRACT(TIMEZONE_ABBR FROM SYSTIMESTAMP) FROM dual;
Funções de Formatação de Números
- TO_CHAR(número): Converte um número em uma string com formato específico.
SELECT TO_CHAR(sal, '$999,999.99') FROM emp;
- TO_NUMBER(string) : Converte uma string em um número.
SELECT empno, ename, job, sal FROM emp WHERE sal > TO_NUMBER('1500');
- MASCARA_NUMERO: Aplica uma máscara de formato a um número.
SELECT TO_CHAR(1234, '999') FROM dual;
Funções de Manipulação de Caracteres
- CHR(v1): Retorna o caractere correspondente ao código ASCII especificado.
SELECT CHR(49) AS "CHR(49)", CHR(97) AS "CHR(97)", CHR(38) AS "CHR(38)" FROM dual;
- NVL(v1,v2): Substitui valores nulos por um valor especificado.
-
SELECT sal, comm, sal * 14 + NVL(comm, 0) FROM emp;
- GREATEST(v1,v2,v3): Retorna o maior valor entre os argumentos fornecidos.
SELECT GREATEST(1, 2), GREATEST(1, 2, 3), GREATEST(1, 2, 3, 4) FROM dual;
Funções Condicionais
-
DECODE(v, v1, r1, v2, r2, r_default): Compara um valor com uma lista de valores e retorna o resultado correspondente.
SELECT grade, DECODE (grade, 1, '15%', 2, '10%', 3, '8%', '5%') "Bonus" FROM salgrade;SELECT ename, job, DECODE(job, 'CLERK', 'Empregado de escritório', 'ANALYST', 'Analista programador', 'MANAGER', 'Gestor', 'SALESMAN', 'Vendedor', 'PRESIDENT', 'Presidente', 'UNKNOWN') "Job2" FROM emp; -
CASE: Executa expressões condicionais mais complexas, permitindo comparações com operadores lógicos.
SELECT ename, job,
CASE
WHEN job = 'CLERK' THEN 'Empregado de escritório'
WHEN job = 'ANALYST' THEN 'Analista programador'
WHEN job = 'MANAGER' THEN 'Gestor'
WHEN job = 'SALESMAN' THEN 'Vendedor'
WHEN job = 'PRESIDENT' THEN 'Presidente'
ELSE 'Outra função'
END AS "Função"
FROM emp;SELECT sal,
CASE
WHEN sal < 800 THEN 'baixo'
WHEN sal < 1500 THEN 'médio'
WHEN sal < 2500 THEN 'médio alto'
ELSE 'alto'
END AS Salario
FROM emp;