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()ouCURRENT_DATE(): Retorna a data atual.CURTIME()ouCURRENT_TIME(): Retorna a hora atual.NOW()ouCURRENT_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)ouUCASE(str): Converte para maiúsculas.LOWER(str)ouLCASE(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)ouCEIL(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)oux % 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()ouCURRENT_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 |
+----------------+---------------+