Manejo fecha y hora Los datos en MySQL son esenciales para muchas operaciones de bases de datos, especialmente cuando se trata de manejar marcas de tiempo, programar tareas o generar tareas basadas en el tiempo. MySQL proporciona una variedad de funciones de fecha y hora que ayudan a los usuarios a trabajar con valores de fecha, realizar cálculos y formatearlos según sea necesario.
Estas funciones permiten a los desarrolladores realizar cálculos, extraer partes específicas de una fecha o incluso formatear la salida para una mejor legibilidad. En este artículo, exploraremos las funciones de fecha de MySQL más utilizadas, explicaremos su sintaxis, brindaremos ejemplos y le explicaremos cómo usarlas de manera efectiva.
ex de nombre de usuario
Comprender los tipos de datos de fecha y hora de MySQL
Trabajar con fechas en MySQL puede resultar complicado para los principiantes, especialmente porque el formato de la fecha en la base de datos debe coincidir con el formato de los datos de entrada durante la inserción. En muchos casos, en lugar de simplemente usar una fecha simple, es posible que necesitemos almacenar tanto una fecha como una hora según el caso de uso. Aquí es donde el DATETIME y TIMESTAMP Los tipos de datos entran en juego.
MySQL proporciona los siguientes tipos de datos para almacenar valores de fecha y hora:
1. FECHA :
- Formato :
YYYY-MM-DD - Se utiliza para almacenar únicamente la fecha (año, mes y día) sin ningún componente de tiempo.
2. FECHA HORA :
- Formato :
YYYY-MM-DD HH:MM:SS - Almacena tanto la fecha como la hora, lo que lo hace útil cuando necesita capturar horas específicas junto con la fecha.
3. MARCA DE TIEMPO :
- Formato :
YYYY-MM-DD HH:MM:SS - Similar a
DATETIMEperoTIMESTAMPTambién incluye soporte de zona horaria. Se actualiza automáticamente a la marca de tiempo actual cuando se modifica un registro, lo que lo hace ideal para realizar un seguimiento de los cambios en los registros a lo largo del tiempo.
4. AÑO :
- Formato :
YYYYoYY - Se utiliza para almacenar solo el año, lo que puede resultar útil para aplicaciones en las que solo se necesita el año, como el seguimiento de años de nacimiento o años fiscales.
Funciones de fecha y hora de MySQL
Ahora profundicemos en las funciones de fecha de MySQL que puede usar para manipular y consultar datos de fecha y hora de manera efectiva.
1. AHORA(): obtener la fecha y hora actuales
El AHORA() La función recupera la fecha y hora actuales en AAAA-MM-DD HH:MI:SS formato.
Consulta:
SELECT NOW();
Producción:

2. CURDATE() - Obtener sólo la fecha actual
Si solo necesitamos la fecha actual sin la parte de tiempo, podemos usar CURDATE() que devuelve la fecha en YYYY-MM-DD formato.
Consulta:
SELECT CURDATE();
Producción:

3. CURTIME() - Obtener solo la hora actual
La función CURTIME() devuelve la hora actual en HH:MI:SS formato excluyendo la fecha.
Consulta:
SELECT CURTIME();
Producción:

4. DATE() - Extrae la parte de fecha de un valor DATETIME
ElDATE()La función extrae sólo la parte de la fecha de unDATETIMEoTIMESTAMPvalor descartando el tiempo.
Ejemplo: Para una mesa llamada users :
| Identificación | Nombre | Hora de nacimiento |
|---|---|---|
| 4120 | Práctica | 1996-09-26 16:44:15.581 |
Consulta:
SELECT Name DATE(BirthTime)
AS BirthDate FROM Test;
Producción:
| Nombre | Fecha de nacimiento |
|---|---|
| Práctica | 1996-09-26 |
5. EXTRACT() - Extraer partes de fechas específicas
EXTRACT()se utiliza para extraer partes específicas de una fecha, como el día, mes o año. Esta función puede resultar especialmente útil al analizar o comparar diferentes partes de una fecha. Se pueden considerar varias unidades pero solo se utilizan algunas como MICROSEGUNDO SEGUNDO MINUTO HORA DÍA SEMANA MES TRIMESTRE AÑO etc. Y 'fecha' es una expresión de fecha válida.
Sintaxis:
EXTRACTO(unidad DESDE fecha);
Consulta para extraer el día:
SELECT Name Extract(DAY FROM
BirthTime) AS BirthDay FROM Test;
Producción:
| Nombre | Cumpleaños |
|---|---|
| Práctica | 26 |
Consulta para extraer año:
SELECT Name Extract(YEAR FROM BirthTime)
AS BirthYear FROM Test;
Producción:
| Nombre | Año de nacimiento |
|---|---|
| Práctica | 1996 |
Consulta para extraer segundos:
gimp guardando como jpeg
SELECT Name Extract(SECOND FROM
BirthTime) AS BirthSecond FROM Test;
Producción:
| Nombre | NacimientoSegundo |
|---|---|
| Práctica | 581 |
6. DATE_ADD() - Agregar intervalos a una fecha
El FECHA_ADD() La función le permite agregar intervalos de tiempo (por ejemplo, días, meses, años) a una fecha oDATETIMEvalor.
Sintaxis:
DATE_ADD(tipo de expresión de INTERVALO de fecha);
Ejemplo: Para la siguiente tabla llamada ' Prueba '
| Identificación | Nombre | Hora de nacimiento |
|---|---|---|
| 4120 | Práctica | 1996-09-26 16:44:15.581 |
Consulta a Agregar 1 año a una fecha
SELECT Name DATE_ADD(BirthTime INTERVAL
1 YEAR) AS BirthTimeModified FROM Test;
Producción:
| Nombre | Hora de nacimientoModificado |
|---|---|
| Práctica | 1997-09-26 16:44:15.581 |
Consulta para agregar 30 días a una fecha
protocolo de internet smtp
SELECT Name DATE_ADD(BirthTime
INTERVAL 30 DAY) AS BirthDayModified FROM Test;
Producción:
| Nombre | Día de nacimientoModificado |
|---|---|
| Práctica | 1996-10-26 16:44:15.581 |
Consulta para agregar 4 horas a una fecha
SELECT Name DATE_ADD(BirthTime INTERVAL
4 HOUR) AS BirthHourModified FROM Test;
Producción:
| Nombre | NacimientoSegundo |
|---|---|
| Práctica | 1996-10-26 20:44:15.581 |
7. FECHADIFF() – Encuentra la diferencia entre dos fechas
Esta función devuelve el número de días entre dos fechas.
Sintaxis:
DATEDIFF(intervalofecha1 fecha2);
intervalo - minuto/hora/mes/año, etc.
fecha1 y fecha2: expresión de fecha/hora
Consulta a Encuentra la diferencia entre dos fechas
SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;
Producción:
| FechaDiff |
|---|
8. DATE_FORMAT() - Fecha y hora del formato
DATE_FORMAT() nos permite formatear un FECHA FECHA HORA o MARCA DE TIEMPO valor en un formato personalizado utilizando marcadores de posición.
xd xd significado
Sintaxis:
DATE_FORMAT(formato de fecha);
la fecha es una fecha válida y el formato especifica el formato de salida para la fecha/hora. Los formatos que se pueden utilizar son:
- %a-Nombre abreviado del día de la semana (domingo-sábado)
- %b-Nombre abreviado del mes (enero-diciembre)
- %c-Mes numérico (0-12)
- %D-Día del mes con sufijo en inglés (0º 1º 2º 3º)
- %d-Día del mes numérico (00-31)
- %e-Día del mes numérico (0-31)
- %f-Microsegundos (000000-999999)
- %H-Hora (00-23)
- %h-Hora (01-12)
- %I-Hora (01-12)
- %i-Minutos numéricos (00-59)
- %j-Día del año (001-366)
- %k-hora (0-23)
- %l-hora (1-12)
- %M-Nombre del mes (enero-diciembre)
- %m-Mes numérico (00-12)
- %p-AM o PM
- %r-Hora 12 horas (hh:mm: ss seguido de AM o PM)
- %S-Segundos (00-59)
- %s-segundos (00-59)
- %T-Hora 24 horas (hh:mm:ss)
- %U-Semana (00-53) donde el domingo es el primer día de la semana
- %u-Semana (00-53) donde el lunes es el primer día de la semana
- %V-Week (01-53) donde el domingo es el primer día de la semana usado con %X
- %v-Semana (01-53) donde el lunes es el primer día de la semana usado con %x
- %W-Nombre del día de la semana (domingo-sábado)
- %w-Día de la semana (0=domingo 6=sábado)
- %X-Año para la semana donde el domingo es el primer día de la semana se utilizan cuatro dígitos con %V
- %x-Año para la semana donde el lunes es el primer día de la semana se utilizan cuatro dígitos con %v
- %Y-Año numérico de cuatro dígitos
- %y-Año numérico de dos dígitos
Consulta para dar formato a una fecha
SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;Producción:
| fecha_formateada |
|---|
| Jueves 10 de abril de 2025 |
Mejores prácticas para trabajar con fecha y hora en MySQL
1. Utilice siempre formatos de fecha adecuados
Al insertar o actualizar fechas, asegúrese de seguir los formatos esperados de MySQL (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). Esto garantiza que sus consultas devuelvan los resultados esperados sin errores.
2. Consideraciones de zona horaria con TIMESTAMP
MientrasDATETIMEno almacena información de zona horariaTIMESTAMPhace. Si su aplicación es sensible a la zona horaria (por ejemplo, en aplicaciones internacionales), considere usarTIMESTAMPpara campos de fecha y hora que deben tener en cuenta diferentes zonas horarias.
3. Manejo de rangos de fechas en consultas
Para filtrar datos según rangos de fechas (por ejemplo, recuperar todos los registros de un mes o año específico), asegúrese de utilizar comparaciones de fechas adecuadas en elWHEREcláusula. Ejemplo:
SELECT * FROM orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';
4. Consideraciones de rendimiento
Cuando trabaje con funciones de fecha y hora, especialmente en grandes conjuntos de datos, tenga en cuenta el impacto en el rendimiento. Evite el uso de funciones comoNOW()oCURDATE()en elWHEREcláusula, ya que pueden ralentizar las consultas cuando se trata de tablas grandes.
Conclusión
Funciones de fecha y hora de MySQL son herramientas esenciales para manejo y manipulando datos temporales dentro de sus bases de datos. Al dominar funciones comoNOW() CURDATE() DATE_ADD() DATEDIFF()yDATE_FORMAT()puedes trabajar fácilmente con cálculos basados en el tiempo comparaciones y formatos . La clave para utilizar estas funciones de forma eficaz es comprender su sintaxis, cuándo y cómo utilizarlas y sus implicaciones en el rendimiento en grandes conjuntos de datos. Con este conocimiento, podrá crear consultas más eficientes, precisas y escalables para todas sus necesidades relacionadas con fechas y horas en MySQL.