Funções Nativas do MySQL: Data, String, Matemática e Utilitários

O MySQL oferece um conjunto robusto de funções nativas que facilitam a manipulação e transformação de dados diretamente no banco de dados. Estas funções são categorizadas para lidar com tipos de dados comuns como datas, strings e números, além de fornecer utilitários diversos. A seguir, exploraremos as principais funções em cada categoria.

Funções de Data e Hora

As funções de data e hora permitem obter informações sobre o tempo atual, formatar datas, realizar cálculos e extrair partes específicas de valores de data/hora.

Função Descrição
CURDATE() Retorna a data atual.
CURTIME() Retorna a hora atual.
NOW() Retorna a data e hora atuais.
DATE(expressao_datetime) Extrai a parte da data de uma expressão de data e hora.
DATE_ADD(data, INTERVAL valor unidade) Adiciona um intervalo de tempo a uma data. As unidades podem ser DAY, MONTH, YEAR, MINUTE, SECOND, etc.
DATE_SUB(data, INTERVAL valor unidade) Subtrai um intervalo de tempo de uma data.
DATEDIFF(data1, data2) Calcula a diferença em dias entre duas datas.

Exemplos de Uso de Funções de Data

Para obter a data atual:

SELECT CURDATE();
-- Saída: '2023-11-11' (Exemplo)

Para obter a hora atual:

SELECT CURTIME();
-- Saída: '15:46:47' (Exemplo)

Para obter a data e hora atuais (timestamp):

SELECT NOW();
-- Saída: '2023-11-11 15:47:19' (Exemplo)

Adicionar 15 dias a uma data específica:

SELECT DATE_ADD('2024-01-01', INTERVAL 15 DAY);
-- Saída: '2024-01-16'

Subtrair 2 meses de uma data:

SELECT DATE_SUB('2024-03-10', INTERVAL 2 MONTH);
-- Saída: '2024-01-10'

Calcular a diferença em dias entre duas datas:

SELECT DATEDIFF('2023-12-31', '2023-12-01');
-- Saída: 30

Considere uma tabela de posts com um campo data_publicacao:

CREATE TABLE posts (
   id INT PRIMARY KEY AUTO_INCREMENT,
   titulo VARCHAR(100) NOT NULL,
   data_publicacao DATETIME
);

INSERT INTO posts (titulo, data_publicacao) VALUES
('Primeiro Post', NOW()),
('Segundo Post', DATE_SUB(NOW(), INTERVAL 5 MINUTE));

SELECT * FROM posts;
+----+---------------+---------------------+
| id | titulo        | data_publicacao     |
+----+---------------+---------------------+
|  1 | Primeiro Post | 2023-11-11 16:03:38 |
|  2 | Segundo Post  | 2023-11-11 15:58:38 |
+----+---------------+---------------------+

Para buscar posts publicados nos últimos 10 minutos, podemos usar DATE_SUB:

SELECT * FROM posts WHERE data_publicacao > DATE_SUB(NOW(), INTERVAL 10 MINUTE);

Funções de String

As funções de string são essenciais para manipular texto, formatar saídas e realizar comparações.

Função Descrição
CHARSET(str) Retorna o conjunto de caracteres da string.
CONCAT(str1, str2, ...) Concatena (une) duas ou mais strings.
INSTR(str, substr) Retorna a posição da primeira ocorrência de substr em str. Retorna 0 se não encontrar.
UPPER(str) / UCASE(str) Converte a string para maiúsculas.
LOWER(str) / LCASE(str) Converte a string para minúsculas.
LEFT(str, len) Retorna os len caracteres mais à esquerda de str.
RIGHT(str, len) Retorna os len caracteres mais à direita de str.
LENGTH(str) Retorna o comprimento da string em bytes.
REPLACE(str, from_str, to_str) Substitui todas as ocorrências de from_str por to_str em str.
SUBSTRING(str, pos, len) Extrai uma subcadeia de str, começando na posição pos e com comprimento len.
TRIM(str) / LTRIM(str) / RTRIM(str) Remmove espaços em branco de ambas as extremidades, da esquerda ou da direita da string, respectivamente.

Exemplos de Uso de Funções de String

Concatenar informações para formar uma descrição:

SELECT CONCAT('O produto ', 'Smartphone', ' custa ', 999.99, ' reais.') AS DescricaoCompleta;
-- Saída: 'O produto Smartphone custa 999.99 reais.'

Converter uma string para maiúsculas e minúsculas:

SELECT UPPER('mysql é fantástico'), LOWER('APRENDA SQL');
-- Saída: 'MYSQL É FANTÁSTICO', 'aprenda sql'

Obter os primeiros 5 caracteres de um texto:

SELECT LEFT('Desenvolvimento Web', 5);
-- Saída: 'Desen'

Substituir parte de uma string:

SELECT REPLACE('Isso é um teste.', 'teste', 'exemplo');
-- Saída: 'Isso é um exemplo.'

Extrair uma subcadeia (do 7º caractere, com 4 caracteres de comprimento):

SELECT SUBSTRING('Desenvolvimento', 7, 4);
-- Saída: 'volv'

Remover espaços em branco:

SELECT TRIM('   Texto com espaços   ') AS TrimmedText;
-- Saída: 'Texto com espaços'

Funções Matemáticas

As funções matemáticas são empregadas para realizar cálculos numéricos, arredondamentos e outras operações aritméticas.

Função Descrição
ABS(numero) Retorna o valor absoluto de um número.
CEIL(numero) / CEILING(numero) Retorna o menor inteiro maior ou igual ao número (arerdonda para cima).
FLOOR(numero) Retorna o maior inteiro menor ou igual ao número (arredonda para baixo).
ROUND(numero, decimais) Arredonda um número para o número especificado de casas decimais.
MOD(dividendo, divisor) Retorna o resto da divisão de dividendo por divisor.
RAND() Retorna um número de ponto flutuante aleatório entre 0 (inclusive) e 1 (exclusive).
FORMAT(numero, decimais) Formata um número para um número especificado de casas decimais, com separador de milhares.

Exemplos de Uso de Funções Matemáticas

Valor absoluto:

SELECT ABS(-10.5);
-- Saída: 10.5

Arredondar para cima:

SELECT CEILING(7.1), CEILING(-7.9);
-- Saída: 8, -7

Arredondar para baixo:

SELECT FLOOR(7.9), FLOOR(-7.1);
-- Saída: 7, -8

Arredondar para duas casas decimais:

SELECT ROUND(123.456, 2);
-- Saída: 123.46

Obter o resto da divisão:

SELECT MOD(10, 3);
-- Saída: 1

Gerar um número aleatório:

SELECT RAND();
-- Saída: 0.123456789 (Exemplo, valor muda a cada execução)

Formatar um número com duas casas decimais e separador de milhares:

SELECT FORMAT(12345.6789, 2);
-- Saída: '12,345.68' (Comportamento pode variar com locale)

Outras Funções Úteis

Além das categorias anteriores, o MySQL possui funções para obter informações do ambiente, segurança e lógica condicional.

Função Descrição
USER() Retorna o nome do usuário e host atuais do MySQL.
DATABASE() Retorna o nome do banco de dados atualmente selecionado.
MD5(str) Calcula o hash MD5 de uma string.
PASSWORD(str) Calcula uma string de hash para senhas no MySQL (função legada, não recomendada para novas aplicações).
IFNULL(expr1, expr2) Se expr1 não for NULL, retorna expr1. Caso contrário, retorna expr2.

Exemplos de Uso de Outras Funções

Verificar o usuário conecatdo:

SELECT USER();
-- Saída: 'root@localhost' (Exemplo)

Identificar o banco de dados ativo:

SELECT DATABASE();
-- Saída: 'meu_banco_de_dados' (Exemplo)

Gerar um hash MD5 para uma string:

SELECT MD5('minhasenha');
-- Saída: '21232f297a57a5a743894a0e4a801fc3'

Utilizar IFNULL para substituir valores nulos:

SELECT IFNULL('Valor Presente', 'Valor Padrão');
-- Saída: 'Valor Presente'

SELECT IFNULL(NULL, 'Valor Padrão');
-- Saída: 'Valor Padrão'

Tags: MySQL SQL Funções de Data Funções de String funções matemáticas

Publicado em 7-21 02:29