Función CURDATE() de MySQL
La función `CURDATE()` de MySQL devuelve la fecha actual en el formato `AAAA-MM-DD`. Se utiliza habitualmente para recuperar y comparar la fecha actual en consultas SQL.
Utilización
La función `CURDATE()` se utiliza cuando necesitas trabajar con la fecha actual en operaciones con datos, como filtrar registros o establecer valores de fecha por defecto. No requiere argumentos y puede utilizarse en las cláusulas `SELECT`, `INSERT`, `UPDATE` y `WHERE`.
sql
CURDATE();
Esta sintaxis devuelve la fecha actual como un valor de fecha.
Nota: `CURDATE()` y `CURRENT_DATE()` son sinónimos y pueden utilizarse indistintamente.
Ejemplos
1. Recuperación básica de la fecha actual
sql
SELECT CURDATE();
Este ejemplo simplemente recupera la fecha actual del reloj del sistema del servidor MySQL.
2. Utilizar CURDATE() en una cláusula WHERE
sql
SELECT order_id, order_date
FROM orders
WHERE order_date = CURDATE();
En este ejemplo, se utiliza `CURDATE()` para filtrar los pedidos realizados en la fecha actual.
3. Insertar la fecha actual en una tabla
sql
INSERT INTO attendance (employee_id, date_checked_in)
VALUES (123, CURDATE());
Aquí se utiliza `CURDATE()` para insertar automáticamente la fecha actual en la columna `date_checked_in` cuando se añade un nuevo registro.
4. Consulta compleja con aritmética de fechas
sql
SELECT employee_id
FROM attendance
WHERE date_checked_in = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
Este ejemplo recupera los registros de los empleados que se registraron el día anterior a la fecha actual.
Consejos y buenas prácticas
- Garantiza la coherencia horaria. Asegúrate de que tu aplicación y el servidor MySQL utilizan la misma configuración de zona horaria para evitar resultados inesperados.
- Utiliza `CURDATE()` para valores sólo de fecha. Si necesitas tanto la fecha como la hora, considera utilizar `NOW()` en su lugar.
- Combínalo con las funciones de fecha. Utiliza `CURDATE()` junto con otras funciones de fecha como `DATE_ADD()` para cálculos de fecha más complejos.
- Ten en cuenta el reparto implícito. Al comparar `CURDATE()` con columnas datetime, puede producirse una fundición implícita, lo que podría afectar al rendimiento. Para optimizar, convierte explícitamente la columna datetime en una fecha utilizando `CAST(datetime_column AS DATE)`.