Funções Internas do MySQL para Datas, Strings, Matemática e Utilidades Diversas

Funções de Data

O MySQL oferece diversas funções internas para operar com datas e horários. Abaixo estão algumas das principais com exemplos de uso.

  • CURDATE() ou CURRENT_DATE(): Retorna a data atual.
  • CURTIME() ou CURRENT_TIME(): Retorna a hora atual.
  • NOW() ou CURRENT_TIMESTAMP(): Retorna a data e hora atuais.
  • DATE(expr): Extrai a parte da data de uma expressão datetime.
  • DATE_ADD(date, INTERVAL expr unit): Adiciona um intervalo a uma data.
  • DATE_SUB(date, INTERVAL expr unit): Subtrai um intervalo de uma data.
  • DATEDIFF(date1, date2): Calcula a diferença em dias entre duas datas.

Exemplo: Obtendo a data atual

SELECT CURDATE() AS 'Data de Hoje';

Resultado típico:

+--------------+
| Data de Hoje |
+--------------+
| 2024-05-15   |
+--------------+

Exemplo: Calculadno uma data futura

SELECT DATE_ADD('2024-01-20', INTERVAL 45 DAY) AS 'Nova Data';

Resultado:

+------------+
| Nova Data  |
+------------+
| 2024-03-05 |
+------------+

Exemplo prático com tabela

Criando uma tabela de logs e inserindo registros com carimbo de tempo:

CREATE TABLE logs_atividade (
    registro_id INT PRIMARY KEY AUTO_INCREMENT,
    descricao VARCHAR(255) NOT NULL,
    momento_registro DATETIME DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO logs_atividade (descricao) VALUES ('Sistema iniciado');
INSERT INTO logs_atividade (descricao) VALUES ('Backup concluído');

SELECT * FROM logs_atividade;

Para selecionar logs das últimas 3 horas:

SELECT * FROM logs_atividade
WHERE DATE_ADD(momento_registro, INTERVAL 3 HOUR) > NOW();

Funções de String

As funções de string permitem manipular e consultar textos no MySQL. Veja algumas funções úteis.

  • CHARSET(str): Retorna o conjunto de caracteres de uma string.
  • CONCAT(str1, str2, ...): Concatena strings.
  • INSTR(str, substr): Retorna a posição inicial de uma substring.
  • UPPER(str) ou UCASE(str): Converte para maiúsculas.
  • LOWER(str) ou LCASE(str): Converte para minúsculas.
  • LEFT(str, len): Extrai caracteres da esquerda.
  • RIGHT(str, len): Extrai caracteres da direita.
  • LENGTH(str): Retorna o comprimento em bytes.
  • REPLACE(str, from_str, to_str): Substitui ocorências.
  • SUBSTRING(str, pos, len): Extrai uma substring.
  • TRIM([{BOTH|LEADING|TRAILING} [remstr] FROM] str): Remove espaços em branco.

Exemplo: Concatenando informações

SELECT CONCAT('Nome: ', nome_completo, ', Idade: ', idade) AS 'Perfil'
FROM usuarios;

Exemplo: Obtendo o comprimento de strings

SELECT LENGTH(email), email FROM clientes;

Exemplo: Substituindo caracteres

SELECT REPLACE(descricao_produto, 'Antigo', 'Novo'), descricao_produto
FROM produtos;

Exemplo: Formatando nomes

SELECT CONCAT(LOWER(LEFT(nome, 1)), SUBSTRING(nome, 2)) AS 'Nome Formatado'
FROM empregados;

Funções Matemáticas

Para cálculos numéricos, o MySQL inclui várias funções matemáticas integradas.

  • ABS(x): Valor absoluto.
  • BIN(x): Converte decimal para binário.
  • HEX(x): Converte decimal para hexadecimal.
  • CEILING(x) ou CEIL(x): Arredonda para cima.
  • FLOOR(x): Arredonda para baixo.
  • FORMAT(x, d): Formata número com d casas decimais.
  • RAND(): Gera número aleatório entre 0 e 1.
  • MOD(x, y) ou x % y: Resto da divisão.

Exemplo: Valor absoluto e arredondamento

SELECT ABS(-47.8) AS 'Valor Absoluto', CEILING(3.14) AS 'Arredondado para Cima';

Resultado:

+----------------+----------------------+
| Valor Absoluto | Arredondado para Cima |
+----------------+----------------------+
|           47.8 |                    4 |
+----------------+----------------------+

Exemplo: Formatação de números

SELECT FORMAT(1234.5678, 2) AS 'Formatado', FORMAT(-0.123, 3) AS 'Negativo Formatado';

Exemplo: Gerando números aleatórios

SELECT RAND() * 100 AS 'Aleatório entre 0 e 100';

Outras Funções Úteis

Além das categorias anteriores, existem funções para operações específicas.

  • USER() ou CURRENT_USER(): Retorna o usuário atual conectado.
  • DATABASE(): Retorna o banco de dados em uso.
  • MD5(str): Gera um hash MD5 de 32 caracteres.
  • PASSWORD(str): Gera uma senha hashada (obs: depreciada em versões recentes).
  • IFNULL(expr1, expr2): Retorna expr2 se expr1 for NULL, caso contrário expr1.

Exemplo: Verificando o usuário e banco atuais

SELECT USER() AS 'Usuário Atual', DATABASE() AS 'Banco de Dados';

Exemplo: Usando IFNULL para tratar valores nulos

SELECT IFNULL(preco, 0.00) AS 'Preço Ajustado', IFNULL(NULL, 'Padrão') AS 'Valor Padrão';

Resultado:

+----------------+---------------+
| Preço Ajustado | Valor Padrão  |
+----------------+---------------+
|          10.99 | Padrão        |
+----------------+---------------+

Tags: MySQL funções SQL consultas de data manipulação de strings funções matemáticas

Publicado em 6-12 04:26 por Thomas