Função MySQL NOW()
A função `NOW()` do MySQL retorna a data e a hora atuais no formato `YYYY-MM-DD HH:MM:SS`. É comumente usado para capturar o momento exato em que uma instrução SQL é executada. O resultado é baseado no fuso horário atual do servidor, a menos que você tenha configurado de outra forma.
Uso
A função `NOW()` é usada quando você precisa do carimbo de data/hora atual para operações como inserção de dados, atualizações ou registro em contextos SQL, como instruções `SELECT` ou procedimentos armazenados. É frequentemente utilizado para rastrear o tempo de criação ou modificação de registros.
sql
SELECT NOW();
Nessa sintaxe, `NOW()` produz a data e a hora atuais quando a consulta é executada.
Exemplos
1. Recuperar data e hora atuais
sql
SELECT NOW();
Este exemplo retorna a data e a hora atuais do servidor.
2. Inserir carimbo de data/hora atual
sql
INSERT INTO logs (event, created_at)
VALUES ('User login', NOW());
Aqui, a função `NOW()` registra a hora exata em que um usuário faz login, armazenando-a na coluna `created_at`.
3. Atualizar com o registro de data e hora atual
sql
UPDATE orders
SET last_modified = NOW()
WHERE order_id = 102;
Esse exemplo atualiza a coluna `last_modified` de um pedido específico para o registro de data e hora atual, indicando quando a última alteração foi feita.
Dicas e práticas recomendadas
- Use em INSERT e UPDATE. Utilize `NOW()` para marcar automaticamente a data e a hora dos registros após a criação ou modificação.
- Combine com as configurações de fuso horário. Verifique se as configurações de fuso horário do banco de dados correspondem às necessidades do aplicativo para obter carimbos de data e hora precisos. Use funções como `CONVERT_TZ()` para gerenciar os fusos horários de forma eficaz.
- Considere o impacto no desempenho. O `NOW()` é avaliado uma vez por instrução, não por linha, o que reduz a sobrecarga de desempenho em consultas grandes.
- Utilize para registro e auditoria. Use `NOW()` para rastrear efetivamente a atividade em seus aplicativos para fins de depuração e auditoria.
- Compatibilidade de tipos de dados. A função `NOW()` pode ser armazenada nas colunas `DATETIME` e `TIMESTAMP`, cada uma com propriedades diferentes em relação ao tratamento do fuso horário e à atualização automática.
- Considerações sobre a transação. Tenha cuidado com a forma como os valores `NOW()` podem variar entre diferentes instruções em uma transação se forem executados em momentos diferentes.
- Diferencia-se de CURRENT_TIMESTAMP(). Embora `NOW()` e `CURRENT_TIMESTAMP()` sejam frequentemente usados de forma intercambiável, existem diferenças sutis; `CURRENT_TIMESTAMP()` pode ser ajustado pelos atributos `DEFAULT CURRENT_TIMESTAMP` e `ON UPDATE CURRENT_TIMESTAMP` nas definições de coluna.