Função MySQL CURDATE()
A função `CURDATE()` do MySQL retorna a data atual no formato `YYYY-MM-DD`. É comumente usado para recuperar e comparar a data atual em consultas SQL.
Uso
A função `CURDATE()` é usada quando você precisa trabalhar com a data atual em operações de dados, como filtragem de registros ou definição de valores de data padrão. Ele não requer argumentos e pode ser usado nas cláusulas `SELECT`, `INSERT`, `UPDATE` e `WHERE`.
sql
CURDATE();
Essa sintaxe retorna a data atual como um valor de data.
Observação: `CURDATE()` e `CURRENT_DATE()` são sinônimos e podem ser usados de forma intercambiável.
Exemplos
1. Recuperação básica da data atual
sql
SELECT CURDATE();
Este exemplo simplesmente recupera a data atual do relógio do sistema do servidor MySQL.
2. Usando CURDATE() em uma cláusula WHERE
sql
SELECT order_id, order_date
FROM orders
WHERE order_date = CURDATE();
Neste exemplo, `CURDATE()` é usado para filtrar os pedidos que foram feitos na data atual.
3. Inserção da data atual em uma tabela
sql
INSERT INTO attendance (employee_id, date_checked_in)
VALUES (123, CURDATE());
Aqui, `CURDATE()` é usado para inserir automaticamente a data atual na coluna `date_checked_in` quando um novo registro é adicionado.
4. Consulta complexa com aritmética de data
sql
SELECT employee_id
FROM attendance
WHERE date_checked_in = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
Esse exemplo recupera registros de funcionários que deram entrada no dia anterior à data atual.
Dicas e práticas recomendadas
- Garanta a consistência do fuso horário. Certifique-se de que seu aplicativo e o servidor MySQL estejam usando as mesmas configurações de fuso horário para evitar resultados inesperados.
- Use `CURDATE()` para valores somente de data. Se você precisar de data e hora, considere usar `NOW()` em vez disso.
- Combine com as funções de data. Use `CURDATE()` juntamente com outras funções de data, como `DATE_ADD()`, para cálculos de data mais complexos.
- Esteja ciente de que você está fazendo um casting implícito. Ao comparar `CURDATE()` com colunas datetime, pode ocorrer uma conversão implícita, o que pode afetar o desempenho. Para otimizar, converta explicitamente a coluna datetime em uma data usando `CAST(datetime_column AS DATE)`.