- 1 1. Introdução
- 2 2. Funções MySQL para Obter a Data/Hora Atual (Tabela Comparativa)
- 3 3. Detalhes da Função NOW()
- 4 4. Características da Função SYSDATE()
- 5 5. CURTIME() e CURRENT_TIME()
- 5.1 5.1 O que é CURTIME()?
- 5.2 5.2 O que é CURRENT_TIME()?
- 5.3 5.3 CURTIME() vs CURRENT_TIME() (Comparação)
- 5.4 5.4 Exemplos Práticos de CURTIME() / CURRENT_TIME()
- 5.5 5.5 Limitações e Observações para CURTIME() / CURRENT_TIME()
- 5.6 5.6 Quando Você Deve Usar CURTIME() / CURRENT_TIME()?
- 5.7 5.7 Resumo de CURTIME() / CURRENT_TIME()
- 6 6. Exemplos Práticos de Consultas Usando a Hora Atual
- 6.1 6.1 Registrar a hora atual ao inserir dados
- 6.2 6.2 Registrar a hora atual ao atualizar dados
- 6.3 6.3 Recuperar dados dos últimos N dias
- 6.4 6.4 Recuperar dados criados dentro de um intervalo de tempo específico
- 6.5 6.5 Recuperar a hora atual considerando fusos horários
- 6.6 6.6 Definir o horário de criação de um registro como timestamp atual por padrão
- 6.7 6.7 Excluir dados após determinado período
- 6.8 6.8 Obter a hora atual com precisão de milissegundos (microssegundos)
- 6.9 6.9 Guia de Seleção de Casos de Uso
- 6.10 6.10 Resumo
- 7 7. FAQ (Perguntas Frequentes)
- 7.1 7.1 Qual é a diferença entre NOW() e SYSDATE()?
- 7.2 7.2 São CURRENT_TIMESTAMP() e NOW() iguais?
- 7.3 7.3 Como obtenho a hora atual em um fuso horário específico?
- 7.4 7.4 Como posso registrar automaticamente a hora atual?
- 7.5 7.5 Como recupero dados dos últimos N dias?
- 7.6 7.6 Como obtenho a hora atual com precisão de milissegundo (microssegundo)?
- 7.7 7.7 Resumo
- 8 8. Resumo
1. Introdução
Obter a hora atual no MySQL é uma parte crucial da administração de bancos de dados.
Por exemplo, você pode precisar recuperar a hora atual em situações como as seguintes:
- Registrar automaticamente um carimbo de data/hora de criação ao inserir dados (ex.: um timestamp quando um novo usuário se cadastra)
- Registrar os horários de login dos usuários (ex.: gerenciar o histórico de logins)
- Recuperar dados dentro de um intervalo de tempo específico (ex.: buscar o histórico de pedidos das últimas 24 horas)
- Registrar logs de execução do sistema (ex.: gerenciar logs de erros e logs de eventos)
Como pode ver, recuperar corretamente a “hora atual” para gerenciamento de dados e registro de logs é essencial para operar um banco de dados.
Neste artigo, explicaremos como obter a hora atual no MySQL em detalhes usando consultas SQL reais.
Também abordaremos as diferenças entre as funções mais usadas, como escolher a mais adequada e exemplos práticos de consultas — úteis para usuários iniciantes até intermediários.
2. Funções MySQL para Obter a Data/Hora Atual (Tabela Comparativa)
O MySQL oferece várias funções para recuperar a hora atual.
Escolher a função correta para o seu caso de uso é importante, mas muitas pessoas acham as diferenças confusas.
Nesta seção, comparamos as principais funções usadas para obter a data/hora atual no MySQL e explicamos suas características em detalhes.
2.1 Tabela Comparativa das Funções de Tempo do MySQL
| Function | What it returns | Format | Notes |
|---|---|---|---|
| NOW() | Current date and time | YYYY-MM-DD HH:MM:SS | Most commonly used |
| SYSDATE() | Date and time at execution | YYYY-MM-DD HH:MM:SS | Unlike NOW(), it can change on each execution |
| CURTIME() | Current time | HH:MM:SS | Time only (no date) |
| CURRENT_TIME() | Current time | HH:MM:SS | Same as CURTIME() |
| CURRENT_TIMESTAMP() | Current date and time | YYYY-MM-DD HH:MM:SS | Almost the same as NOW() |
| UTC_TIMESTAMP() | Current UTC date and time | YYYY-MM-DD HH:MM:SS | Time zone is fixed to UTC |
A partir da tabela acima, a maioria das funções retorna ou a “data e hora atual” ou apenas a “hora atual”, mas a melhor função depende do seu objetivo.
2.2 Visão Geral e Características de Cada Função
Função NOW()
- A função mais comum para obter a data e hora atuais
- Retorna a hora no momento em que a instrução SQL começa
- Frequentemente usada para timestamps ao inserir ou atualizar dados
SELECT NOW();
Exemplo de saída
2025-02-14 15:30:45
Função SYSDATE()
- Obtém a hora atual no momento da execução
- Ao contrário de NOW(), SYSDATE() pode retornar um valor diferente a cada avaliação (pode mudar mesmo dentro de uma transação)
SELECT SYSDATE();
Exemplo de saída
2025-02-14 15:30:47
Função CURTIME()
- Obtém apenas a hora (HH:MM:SS)
- Útil quando a data não é necessária
SELECT CURTIME();
Exemplo de saída
15:30:45
Função CURRENT_TIME()
- Funciona da mesma forma que CURTIME()
- Nome da função em conformidade com o padrão SQL
SELECT CURRENT_TIME();
Exemplo de saída
15:30:45
Função CURRENT_TIMESTAMP()
- Comporta‑se como NOW()
- Pode ser especificada como valor
DEFAULTde uma coluna (geralmente mais apropriada queNOW()para valores padrão)SELECT CURRENT_TIMESTAMP();
Exemplo de saída
2025-02-14 15:30:45
Definida como valor padrão ao criar uma tabela:
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Função UTC_TIMESTAMP()
- Obtém o UTC (Tempo Universal Coordenado) atual
- Não depende do fuso horário do servidor, permitindo timestamps consistentes
SELECT UTC_TIMESTAMP();
Exemplo de saída
2025-02-14 06:30:45
2.3 Qual Função Você Deve Usar?
| Use case | Recommended function |
|---|---|
| Get the current date and time | NOW() |
| Get a different timestamp each time within a transaction | SYSDATE() |
| Need only the current time (HH:MM:SS) | CURTIME() or CURRENT_TIME() |
| Set as a table default value | CURRENT_TIMESTAMP() |
| Get UTC time | UTC_TIMESTAMP() |
Em geral, para a maioria das recuperações de data/hora, NOW() costuma ser a escolha correta.
Entretanto, selecionar a melhor função para o seu caso de uso permite operações de dados mais flexíveis e confiáveis.
3. Detalhes da Função NOW()
A função NOW() do MySQL é a função mais usada para obter a data e hora atuais (data + hora).
É amplamente utilizada para armazenar timestamps no banco de dados e para recuperar dados dentro de intervalos de tempo específicos.
3.1 Uso Básico do NOW()
Sintaxe do NOW()
SELECT NOW();
Exemplo de saída
2025-02-14 15:30:45
- O formato de saída é
YYYY-MM-DD HH:MM:SS(ano-mês-dia hora:minuto:segundo). - O horário é obtido com base nas configurações de fuso horário padrão do MySQL.
3.2 Casos de Uso Comuns para NOW()
① Registrar o horário atual ao inserir dados
Ao inserir dados em um banco de dados, você pode usar NOW() para registrar um carimbo de data/hora de criação.
INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
② Registrar o horário atual ao atualizar dados
UPDATE users SET last_login = NOW() WHERE id = 1;
③ Recuperar dados de um determinado período de tempo
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 1 DAY;
- Ao especificar
INTERVAL 1 DAY, você pode recuperar “dados do último 1 dia.”
3.3 Tipo de Retorno e Como Alterar o Formato de Saída
Tipo de retorno de NOW()
- Tipo
DATETIME(YYYY-MM-DD HH:MM:SS) - Também pode ser tratado como uma string
SELECT NOW(), typeof(NOW());
Como alterar o formato
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_time;
Exemplo de saída
2025-02-14 15:30:45
3.4 Diferenças entre NOW() e SYSDATE()
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Can return different timestamps within the same statement |
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
Exemplo de saída
NOW() | SLEEP(3) | NOW()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:45
SYSDATE() | SLEEP(3) | SYSDATE()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:48
🚨 Se você estiver trabalhando com transações, NOW() é recomendado para consistência.
3.5 Limitações e Observações para NOW()
① Depende do fuso horário
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
② Para valores padrão de tabela, use CURRENT_TIMESTAMP
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
3.6 Resumo de NOW()
NOW()é a função mais comum para obter a data e hora atuais no MySQL.- Pode ser usada para inserções, atualizações e recuperação de dados baseados em tempo.
- Use
NOW()quando precisar de um carimbo de data/hora consistente dentro de uma transação. SYSDATE()retorna um horário diferente a cada avaliação, então use-a quando precisar do horário exato de execução.- Use
CONVERT_TZ()para obter o horário em um fuso horário diferente.
📌 Conclusão: Na maioria dos casos, NOW() é a melhor escolha para obter a data e hora atuais no MySQL.

4. Características da Função SYSDATE()
A função SYSDATE() é outra forma de obter a data e hora atuais no MySQL, mas se comporta de maneira diferente do NOW(). Nesta seção, explicaremos o uso básico do SYSDATE(), como ele difere do NOW() e observações importantes.
4.1 O que é SYSDATE()?
SYSDATE() é uma função que retorna o horário no momento da execução da instrução. Ao contrário do NOW(), ela retorna um carimbo de data/hora diferente a cada avaliação.
Sintaxe do SYSDATE()
SELECT SYSDATE();
Exemplo de saída
2025-02-14 16:00:45
- Retornado no formato
YYYY-MM-DD HH:MM:SS - Representa o momento em que a consulta é executada
4.2 Diferenças entre SYSDATE() e NOW()
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Returns a different timestamp each time |
Comparação de comportamento: NOW() vs SYSDATE()
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
Exemplo de saída
NOW() | SLEEP(3) | NOW()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:45
SYSDATE() | SLEEP(3) | SYSDATE()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:48
📌 Pontos‑chave
NOW()mantém o carimbo de data/hora desde o início da instrução, portanto não muda.SYSDATE()retorna um carimbo de data/hora diferente a cada avaliação, portanto muda após 3 segundos.
🚨 Use NOW() para processamento de transações
- Porque
SYSDATE()pode se comportar de forma diferente doNOW()em ambientes multithread,NOW()é geralmente recomendado para consistência transacional.
4.3 Exemplos de Uso do SYSDATE()
① Registrar a hora atual ao inserir dados
INSERT INTO logs (event, created_at) VALUES ('User login', SYSDATE());
② Registrar a hora atual ao atualizar dados
UPDATE users SET last_login = SYSDATE() WHERE id = 1;
③ Obter a hora atual em um formato específico
SELECT DATE_FORMAT(SYSDATE(), '%Y-%m-%d %H:%i:%s') AS formatted_time;
Exemplo de saída
2025-02-14 16:05:30
4.4 Limitações e Observações sobre SYSDATE()
① Comportamento de transação
NOW()mantém o timestamp desde o início da instrução , portanto pode ser usado de forma consistente dentro de uma transação.SYSDATE()retorna um timestamp diferente a cada chamada , podendo ocorrer deriva de tempo dentro de uma transação.
② Não pode ser usado como valor DEFAULT
SYSDATE()não pode ser definido como valorDEFAULTde uma coluna de tabela .
✅ Solução: Use DEFAULT CURRENT_TIMESTAMP.
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4.5 Quando Você Deve Usar SYSDATE()?
| Use case | Recommended function |
|---|---|
| Typical current timestamp retrieval | NOW() |
| Use a consistent timestamp within a transaction | NOW() |
| Need the exact execution time | SYSDATE() |
🚀 SYSDATE() é adequado para registro em tempo real, mas não é ideal para processamento de transações.
4.6 Resumo do SYSDATE()
- SYSDATE() obtém o timestamp no momento da execução, ao contrário de
NOW(). - Como pode retornar valores diferentes a cada chamada, é útil para registro em tempo real.
- Para consistência transacional, recomenda‑se
NOW(). - Para valores padrão, use
CURRENT_TIMESTAMP.
📌 Conclusão: Para recuperação geral de timestamps, NOW() é o melhor; para tempos de execução exatos, escolha SYSDATE().
5. CURTIME() e CURRENT_TIME()
Quando você deseja obter a hora atual no MySQL, CURTIME() e CURRENT_TIME() são usados quando você precisa apenas da hora (HH:MM:SS).
Nesta seção, explicaremos o uso básico, as diferenças e exemplos práticos de cada um.
5.1 O que é CURTIME()?
CURTIME() é uma função que obtém a hora atual (hora, minuto, segundo) no MySQL.
Sua característica principal é que não inclui a data — apenas a parte da hora é retornada.
Sintaxe do CURTIME()
SELECT CURTIME();
Exemplo de saída
16:30:45
- Formato:
HH:MM:SS - Depende da configuração de fuso horário do servidor
- Ao contrário de
NOW(), é adequado quando você não precisa de informações de data
5.2 O que é CURRENT_TIME()?
CURRENT_TIME(), assim como CURTIME(), é uma função que obtém a hora atual (HH:MM:SS).
Na prática, ela se comporta exatamente da mesma forma que CURTIME().
Sintaxe do CURRENT_TIME()
SELECT CURRENT_TIME();
Exemplo de saída
16:30:45
📌 Qual é a diferença?
CURTIME()é específico do MySQLCURRENT_TIME()é padrão SQL- Eles se comportam da mesma forma
- Escolha com base na preferência de legibilidade (sem diferença de desempenho)
5.3 CURTIME() vs CURRENT_TIME() (Comparação)
| Function | What it returns | Format | Notes |
|---|---|---|---|
| CURTIME() | Current time (hour/minute/second) | HH:MM:SS | MySQL-specific function |
| CURRENT_TIME() | Current time (hour/minute/second) | HH:MM:SS | SQL-standard function |
5.4 Exemplos Práticos de CURTIME() / CURRENT_TIME()
① Registrar a hora atual ao inserir dados
INSERT INTO user_logs (event, event_time) VALUES ('Login', CURTIME());
② Filtragem (recuperar dados dentro de um intervalo de tempo específico)
SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
③ Alterar precisão (incluir milissegundos)
SELECT CURTIME(3); -- Display up to 3 fractional digits
Exemplo de saída
16:30:45.123
5.5 Limitações e Observações para CURTIME() / CURRENT_TIME()
① Sem informação de data, portanto combine com uma data quando necessário
SELECT CONCAT(CURDATE(), ' ', CURTIME()) AS full_datetime;
② Ao usar como valor DEFAULT
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event_time TIME DEFAULT CURTIME()
);
5.6 Quando Você Deve Usar CURTIME() / CURRENT_TIME()?
| Use case | Recommended function |
|---|---|
| Need only the current time (hour/minute/second) | CURTIME() or CURRENT_TIME() |
| Need current date and time | NOW() |
| Need millisecond precision | CURTIME(3) |
📌 Na maioria dos casos, tanto CURTIME() quanto CURRENT_TIME() funcionam bem.
Escolha a que você achar mais legível.
5.7 Resumo de CURTIME() / CURRENT_TIME()
CURTIME()é específico do MySQL;CURRENT_TIME()segue o padrão SQL- Ambos recuperam a hora atual (HH:MM:SS)
- Use
CURTIME(3)ouDATE_FORMAT()para ajustar formatação/precisão - Se precisar de uma data, combine com
CURDATE()ou useNOW() - Para valores padrão,
CURRENT_TIMESTAMPé comumente usado
📌 Conclusão: Se você só precisa da hora atual, CURTIME() é uma escolha sólida.
6. Exemplos Práticos de Consultas Usando a Hora Atual
Agora que você entende como obter a hora atual no MySQL, vamos ver maneiras práticas de usá‑la.
Nesta seção, apresentaremos exemplos de consultas do mundo real usando a hora atual.
Você aprenderá técnicas úteis para tarefas diárias de banco de dados, como inserções, atualizações e buscas.
6.1 Registrar a hora atual ao inserir dados
① Registrar a hora atual quando um usuário se registra
INSERT INTO users (name, email, created_at)
VALUES ('Sato', 'sato@example.com', NOW());
6.2 Registrar a hora atual ao atualizar dados
② Registrar o timestamp do último login do usuário
UPDATE users SET last_login = NOW() WHERE id = 1;
6.3 Recuperar dados dos últimos N dias
③ Recuperar dados de pedidos dos últimos 7 dias
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
6.4 Recuperar dados criados dentro de um intervalo de tempo específico
④ Recuperar dados criados hoje entre 9:00 e 18:00
SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
6.5 Recuperar a hora atual considerando fusos horários
⑤ Converter hora UTC para hora do Japão (JST)
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
6.6 Definir o horário de criação de um registro como timestamp atual por padrão
⑥ Definir automaticamente created_at como timestamp atual
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
6.7 Excluir dados após determinado período
⑦ Excluir dados com mais de 30 dias
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;
6.8 Obter a hora atual com precisão de milissegundos (microssegundos)
⑧ Obter o timestamp atual com precisão de milissegundos
SELECT NOW(3);
Exemplo de saída
2025-02-14 16:30:45.123
6.9 Guia de Seleção de Casos de Uso
| Use case | Recommended function | Example |
|---|---|---|
| Record the current time when inserting data | NOW() | INSERT INTO users (name, created_at) VALUES ('Sato', NOW()); |
| Record the current time when updating data | NOW() | UPDATE users SET last_login = NOW() WHERE id = 1; |
| Retrieve data from the past N days | NOW() - INTERVAL X DAY | SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY; |
| Retrieve data within a specific time range | CURTIME() | SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00'; |
| Convert UTC time to JST | CONVERT_TZ() | SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo'); |
| Delete old data (older than 30 days) | NOW() - INTERVAL X DAY | DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY; |
6.10 Resumo
NOW()lida com a recuperação básica de timestamp atualCURTIME()eCURRENT_TIME()são úteis quando você precisa apenas da hora- Você pode usar a hora atual para consultas de janela de tempo, filtragem por horário do dia e timestamps com precisão de milissegundos
- Como os timestamps dependem de fusos horários, use
CONVERT_TZ()para obter a hora correta - Para gerenciamento de tamanho de banco de dados, projetar um mecanismo para excluir automaticamente dados antigos também é importante
📌 Conclusão: Usar a hora atual de forma eficaz ajuda a gerenciar os dados de maneira mais eficiente no MySQL.
7. FAQ (Perguntas Frequentes)
Aqui estão perguntas frequentes (FAQ) sobre como obter a hora atual no MySQL.
Cada pergunta é respondida de forma clara e concisa.
7.1 Qual é a diferença entre NOW() e SYSDATE()?
Resposta
Tanto NOW() quanto SYSDATE() recuperam a data e hora atuais, mas diferem em quando o valor é avaliado.
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Returns a different timestamp on each evaluation |
Exemplo de teste
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
Exemplo de saída
NOW() | SLEEP(3) | NOW()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:45
SYSDATE() | SLEEP(3) | SYSDATE()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:48
🚨 Para processamento de transações, NOW() é geralmente recomendado.
7.2 São CURRENT_TIMESTAMP() e NOW() iguais?
Resposta
Eles se comportam quase da mesma forma, mas CURRENT_TIMESTAMP() pode ser usado como um valor DEFAULT.
Exemplo ao criar uma tabela
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
7.3 Como obtenho a hora atual em um fuso horário específico?
Resposta
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
7.4 Como posso registrar automaticamente a hora atual?
Resposta
Ao criar uma tabela, especifique DEFAULT CURRENT_TIMESTAMP para armazenar automaticamente a hora atual em created_at.
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
7.5 Como recupero dados dos últimos N dias?
Resposta
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
7.6 Como obtenho a hora atual com precisão de milissegundo (microssegundo)?
Resposta
SELECT NOW(3);
Exemplo de saída
2025-02-14 16:30:45.123
7.7 Resumo
NOW()eSYSDATE()diferem no momento da avaliaçãoCURRENT_TIMESTAMP()pode ser usado como um valorDEFAULT- Use
CONVERT_TZ()para obter timestamps em outros fusos horários - Use
DEFAULT CURRENT_TIMESTAMPpara registrar automaticamente timestamps de criação - Use
NOW() - INTERVAL X DAYpara recuperar dados dos últimos X dias NOW(3)ouNOW(6)suportam timestamps com precisão de milissegundos/microssegundos
📌 Conclusão: Escolher a função de tempo correta do MySQL é essencial para trabalhar com timestamps atuais.
8. Resumo
Neste artigo, explicamos como obter a hora atual no MySQL.
Focando na função NOW(), abordamos diferenças entre funções semelhantes, exemplos práticos de consultas e notas importantes.
8.1 Principais Funções MySQL para Obter a Hora Atual
| Function | What it returns | Format | Notes |
|---|---|---|---|
| NOW() | Current date and time | YYYY-MM-DD HH:MM:SS | Most common function |
| SYSDATE() | Date and time at execution | YYYY-MM-DD HH:MM:SS | Can return different values on each evaluation |
| CURTIME() | Current time | HH:MM:SS | Time only (no date) |
| CURRENT_TIME() | Current time | HH:MM:SS | Same as CURTIME() |
| CURRENT_TIMESTAMP() | Current date and time | YYYY-MM-DD HH:MM:SS | Almost the same as NOW() |
| UTC_TIMESTAMP() | Current UTC date and time | YYYY-MM-DD HH:MM:SS | Time zone fixed to UTC |
📌 Conclusão:
- Para a recuperação geral de timestamps atuais,
NOW()costuma ser a melhor opção . - Se precisar do tempo exato de execução, use
SYSDATE(). - Se precisar apenas da hora (sem data), escolha
CURTIME().
8.2 Consultas Práticas Usando a Hora Atual
Registrar a hora atual ao inserir dados
INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
Registrar a hora atual ao atualizar dados
UPDATE users SET last_login = NOW() WHERE id = 1;
Recuperar dados dos últimos 7 dias
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
Recuperar hora considerando fusos horários
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
Excluir dados antigos (mais antigos que 30 dias)
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;
8.3 Notas Sobre Fusos Horários
- O
NOW()do MySQL depende da configuração de fuso horário padrão, portanto os resultados podem variar entre ambientes. - Use
CONVERT_TZ()para obter timestamps em outro fuso horário. - Se quiser alterar o fuso horário do servidor:
SET GLOBAL time_zone = 'Asia/Tokyo';
8.4 FAQ Sobre Funções de Hora Atual do MySQL
Q1. Qual a diferença entre NOW() e SYSDATE()?
➡ NOW() obtém a hora no início da consulta, enquanto SYSDATE() obtém a hora na execução.
Q2. São CURRENT_TIMESTAMP() e NOW() iguais?
➡ Eles são quase da mesma forma, mas CURRENT_TIMESTAMP() pode ser usado como um valor DEFAULT.
Q3. Como obtenho a hora atual com precisão de milissegundo (microssegundo)?
➡ Use NOW(3) (milissegundos) ou NOW(6) (microssegundos).
SELECT NOW(3); -- Example: 2025-02-14 16:30:45.123
8.5 Resumo
- No MySQL, selecionar a função correta para a hora atual é importante .
- Use
NOW()para casos típicos, eSYSDATE()quando precisar de timestamps de execução exatos . - Use
CURTIME()apenas para hora, eCONVERT_TZ()para conversão de fuso horário . - Você pode usar a hora atual em inserções, atualizações, buscas e exclusões .
📌 Conclusão: Domine as funções de tempo do MySQL para gerenciar dados de forma mais eficiente.


