Introducción
MySQL viene con muchas funciones integradas que le permiten manipular datos. Estas funciones se agrupan en categorías:funciones de fecha, funciones de cadena, funciones matemáticas y otras.
Las funciones de fecha le brindan numerosas opciones sobre cómo modificar, calcular y convertir expresiones de fecha, hora y fechahora en MySQL.
En este tutorial, aprenderá sobre las funciones de fecha y hora de MySQL y cómo funcionan, en ejemplos prácticos.
Funciones relacionadas con la fecha
FECHA ACTUAL O FECHA_ACTUAL
Devuelve la fecha actual en el formato "YYY-MM-DD" o "YYYYMMDD" con el CURDATE
O CURRENT_DATE
comando.
La sintaxis básica:
CURDATE();
Por ejemplo, si ejecuta:
SELECT CURDATE();
MySQL responde con la fecha actual en el formato:
2021-01-17
FECHA
Devuelve la fecha de una expresión de fecha y hora usando DATE
comando.
La sintaxis básica:
DATE(datetime);
Por ejemplo, si ejecuta:
SELECT DATE('2021-01-17 10:12:16');
La salida es:
2021-01-17
DATE_ADD o ADDDATE
Agregue un valor de hora/fecha a una expresión de fecha con DATE_ADD
o ADDDATE
función.
La sintaxis básica:
DATE_ADD(date, INTERVAL value unit);
Reemplazar fecha con la expresión de fecha a la que desea agregar una hora/fecha. La unidad de valor es la hora/fecha que desea agregar. Debe expresarse en un valor numérico junto con la unidad del valor.
La unidad puede ser:
- SEGUNDO
- MINUTO
- HORA
- DÍA
- SEMANA
- MES
- TRIMESTRE
- AÑO
- SEGUNDO_MICROSEGUNDO
- MINUTO_MICROSEGUNDO
- MINUTO_SEGUNDO
- HORA_MICROSEGUNDO
- HORA_SEGUNDO
- HORA_MINUTO
- DÍA_MICROSEGUNDO
- DÍA_SEGUNDO
- DÍA_MINUTO
- DÍA_HORA
- AÑO_MES
Por ejemplo, si ejecuta:
SELECT DATE_ADD('2021-01-17 07:14:21', INTERVAL 20 MINUTE);
La salida devuelve el resultado:
2021-01-17 07:34:21
FORMATO_FECHA
Dar formato a una fecha usando DATE_FORMAT
.
La sintaxis básica:
DATE_FORMAT(date, format);
La fecha es la expresión de fecha que desea reformatear, mientras que el formato es una combinación de los siguientes especificadores:
Por ejemplo, si ejecuta:
SELECT DATE_FORMAT('2021-01-17', '%W %M %Y');
La salida muestra el resultado:
Sunday January 2021
DATE_SUB o SUBDATE
Restar un valor de hora/fecha a una expresión de fecha con DATE_SUB
o SUBDATE
función.
La sintaxis básica:
DATE_SUB(date, INTERVAL value unit);
Reemplazar fecha con la expresión de fecha de la que desea restar. La unidad de valor es la hora/fecha que desea restar. Debe expresarse en valor numérico junto con la unidad del valor.
Encuentre una lista de tipos de unidad en la sección DATE_ADD.
Por ejemplo, si ejecuta:
SELECT DATE_SUB('2021-01-17 07:14:21', INTERVAL 1 HOUR);
La salida devuelve el resultado:
2021-01-17 06:14:21
DIF.DE FECHA
Devuelve el número de días entre dos expresiones de fecha con DATEDIFF
función.
La sintaxis básica:
DATEDIFF(date1,date2);
Por ejemplo:
SELECT DATEDIFF('2021-01-23','2021-01-14');
Devuelve el resultado:
9
EXTRACTO
Para extraer parte de una expresión de fecha/fechahora, utilice EXTRACT
función.
La sintaxis básica:
EXTRACT(unit FROM date);
En el comando, debe especificar qué unidad desea extraer de la fecha especificada .
Encuentre una lista de unidades que puede usar en la descripción DATE_ADD.
Por ejemplo, cuando ejecuta:
SELECT EXTRACT(DAY FROM '2021-01-26');
Obtienes el resultado:
26
GET_FORMAT
Devuelve una cadena de formato (una combinación de especificadores) como se especifica en el argumento con GET_FORMAT
. Esta función se usa a menudo con DATE_FORMAT
.
La sintaxis básica:
GET_FORMAT(DATE/TIME/DATETIME,format)
Utilice esta función con expresiones de fecha, hora y fechahora.
El formato puede ser:
- 'EUR'
- 'Estados Unidos'
- 'JIS'
- 'ISO'
- 'INTERNO'
Hay un número finito de resultados que puede obtener usando GET_FORMAT
función. A continuación encontrará una lista de todas las llamadas a funciones y sus resultados.
Por ejemplo, podría combinar la función con DATE_FORMAT
, como en el siguiente ejemplo:
SELECT DATE_FORMAT('2021-01-26', GET_FORMAT(DATE,'EUR'));
Donde el resultado es:
26.01.2021
FECHA
Devuelve una expresión de fecha de un año y día del año especificados usando MAKEDATE
función.
La sintaxis básica:
MAKEDATE(year,day);
Por ejemplo, si ejecuta:
SELECT MAKEDATE(2021,34);
La salida muestra el resultado:
2021-02-03
STR_TO_DATE
Dar formato a una fecha a partir de una cadena con STR_TO_DATE
y devolver un valor de fecha/fechahora.
La sintaxis básica:
STR_TO_DATE(string, format);
La cadena es lo que desea reformatear, mientras que formatear es una combinación de especificadores que describen cada elemento de la cadena .
Puede encontrar una lista de especificadores y su significado en la sección DATE_FORMAT.
Por ejemplo, si ejecuta:
SELECT STR_TO_DATE('January,25,2021', '%M %e %Y');
La salida muestra:
2021-01-25
SISTEMA
Para devolver la fecha y la hora actuales en el formato "AAAA-MM-DD hh:mm:ss" o "AAAAMMDDHHMMSS.uuuuuu", utilice el SYSDATE
función.
La sintaxis básica:
SYSDATE();
Puede agregar el fsp
argumento para incluir precisión de fracciones de segundo (0-6). En ese caso, la sintaxis es SYSDATE(fsp);
.
El comando que se muestra a continuación:
SELECT SYSDATE();
En este momento da el resultado:
2021-01-25 20:21:04
FECHA_UTC
Devuelve el valor de la fecha de hora universal coordinada (UTC) actual en el formato "AAAA-MM-DD" o "AAAAMMDD" con el UTC_DATE
función.
La sintaxis básica:
UTC_DATE();
Por ejemplo, ejecutando el siguiente comando:
SELECT UTC_DATE();
Devuelve la fecha actual que es:
2021-01-25
Funciones relacionadas con el tiempo
AÑADIR TIEMPO
Agregue un intervalo de tiempo a una expresión de hora/fechahora específica usando ADDTIME
.
La sintaxis básica:
ADDTIME(datetime, timevalue)
Por ejemplo, si ejecuta:
SELECT ADDTIME('2021-01-25 08:13:11.000021', '3:14:32.000006');
Obtienes el resultado:
2021-01-25 11:27:43.000027
CONVERTIR_TZ
Convierta una expresión de hora/fechahora de una zona horaria a otra usando ADDTIME
función.
La sintaxis básica:
CONVERT_TZ(datetime, from_timezone,to_timezone)
Por ejemplo, cuando ejecuta:
SELECT CONVERT_TZ('2021-01-25 10:12:00','+00:00','+10:00');
MySQL convierte la fecha y hora especificada a la zona horaria +10:00:
2021-01-25 20:12:00
CURTIME o CURRENT_TIME
Devuelve la hora actual usando CURTIME
o CURRENT_TIME
función. El resultado devuelve la hora en el formato "hh:mm:ss" o "hhmmss".
La sintaxis básica:
CURTIME();
Puede incluir precisión de fracciones de segundo (de 0 a 6) agregando el fsp
argumento.
Por ejemplo, el siguiente comando muestra la hora actual con una precisión de tres fracciones de segundo:
CURTIME(3);
La salida responde con el resultado:
15:19:07.340
HORA
Devuelve la hora de la hora/fechahora especificada con HOUR
función.
La sintaxis básica:
TIME(datetime);
Por ejemplo, si ejecuta:
SELECT HOUR('08:40:07');
El resultado es:
8
HACER TIEMPO
Devuelve una expresión de tiempo a partir de los valores de hora, minuto y segundo especificados mediante MAKETIME
función.
La sintaxis básica:
MAKETIME(hour, minute, second);
Por ejemplo, puede ejecutar:
SELECT MAKETIME(09,25,00);
Donde la salida muestra:
09:25:00
MICROSEGUNDO
Devuelve los microsegundos de la expresión de hora/fechahora especificada con MICROSECOND
.
La sintaxis básica:
MICROSECOND(datetime);
Por ejemplo, puede ejecutar:
SELECT MICROSECOND('2021-01-21 10:23:44.000040');
Donde el resultado es:
40
MINUTO
Devuelve los minutos de la expresión de hora/fechahora especificada utilizando MINUTE
función.
La sintaxis básica:
MINUTE(datetime);
Por ejemplo, si ejecuta el comando:
SELECT MINUTE('10:23:44');
El resultado es:
23
SEGUNDOS_A_HORA
Devuelve un valor de tiempo a partir de un valor de segundos especificado con SEC_TO_TIME
función.
La sintaxis básica:
SEC_TO_TIME(seconds);
Por ejemplo, si ejecuta el comando:
SELECT SEC_TO_TIME(8897);
La salida es:
02:28:17
SUBTIME
Restar un valor de tiempo de una expresión de hora/fechahora usando SUBTIME
función.
La sintaxis básica:
SUBTIME(datetime,timevalue);
Por ejemplo, cuando ejecuta:
SELECT SUBTIME('2021-01-21 21:24:00','2:20:1');
La salida es:
2021-01-21 19:03:59
TIEMPO
Para devolver el valor de tiempo de una expresión de fecha y hora, use el TIME
función.
La sintaxis básica:
TIME(datetime);
Por ejemplo:
SELECT TIME('2021-01-22 13:38:10');
Da el resultado:
13:38:10
FORMATO_HORA
Formatee un valor de tiempo en el formato especificado con TIME_FORMAT
.
La sintaxis básica:
TIME_FORMAT(time,format);
El formato es una combinación de especificadores. Puede encontrar una lista de todos los especificadores y su significado en la descripción de la función DATE_FORMAT.
Por ejemplo, ejecutando:
SELECT TIME_FORMAT('13:45:10','%h %i %s %p');
Obtienes el resultado:
01 45 10 PM
TIME_TO_SEC
Para devolver el valor de tiempo convertido en segundos, use TIME_TO_SEC
.
La sintaxis básica:
TIME_TO_SEC(timevalue);
Por ejemplo, cuando ejecuta:
SELECT TIME_TO_SEC('13:48:05');
El resultado es:
49685
TIEMPO DIFERENCIA
Calcule la diferencia entre dos expresiones de hora/fechahora con TIMEDIFF
función. En este caso, el resultado siempre está en valor de tiempo.
La sintaxis básica:
TIMEDIFF(datetime1,datetime2);
Por ejemplo, cuando ejecuta:
SELECT TIMEDIFF('2021-01-15 11:10:17','2021-01-05 11:10:16');
La salida devuelve:
240:00:01
TO_SEGUNDOS
Para convertir una expresión de fecha/fechahora en segundos, use la función TO_SECONDS
. El resultado es el número de segundos entre 0 y la fecha/fechahora especificada.
La sintaxis básica:
TO_SECONDS(datetime);
Por ejemplo, si ejecuta el comando:
SELECT TO_SECONDS('2021-01-21 08:10:17');
El resultado es:
63778435817
UTC_TIME
Devuelve el valor de la hora UTC actual con UTC_TIME
. Devuelve el valor de la hora en el formato "HH:MM:SS" o "HHMMSS".
La sintaxis básica:
UTC_TIME();
Por ejemplo, si ejecuta:
SELECT UTC_TIME();
Obtienes el resultado en este momento:
19:45:21
Funciones relacionadas con la marca de tiempo
CURRENT_TIMESTAMP o LOCALTIMESTAMP
Para devolver la fecha y hora actuales, use CURRENT_TIMESTAMP
o LOCALTIMESTAMP
. El resultado regresa en el formato "YYYY-MM-DD HH-MM-SS" o "YYYYMMDDHHMMSS.uuuuuu".
La sintaxis básica:
CURRENT_TIMESTAMP();
Por ejemplo, ejecutando:
SELECT CURRENT_TIMESTAMP();
El resultado actual es:
2021-01-25 19:53:55
DESDE_UNIXTIME
Devuelve una expresión de fecha/fechahora desde una marca de tiempo en formato Unix con FROM_UNIXTIME
.
La sintaxis básica:
FROM_UNIXTIME(unix_timestamp);
Si ejecuta el comando sin un argumento que especifique el formato, devuelve el resultado en el formato "YYYY-MM-DD hh:mm:ss" o "YYYYMMDDhhmmss".
Por ejemplo, si ejecuta:
SELECT FROM_UNIXTIME(1611231404);
Obtienes el resultado:
2021-01-21 12:16:44
MARCA DE TIEMPO
Para devolver una expresión de fecha y hora a partir de una fecha o un valor de fecha y hora, utilice la función TIMESTAMP
. Si agrega dos argumentos, la salida devuelve la suma de los argumentos.
La sintaxis básica:
TIMESTAMP(datetime);
TIMESTAMP(datetime,time);
Por ejemplo, cuando ejecuta el comando:
SELECT TIMESTAMP('2021-01-13','30:50:00');
La salida muestra el resultado:
2021-01-14 06:50:00
TIMESTAMPADD
Agregue un valor de tiempo a una expresión de fecha/fechahora usando TIMESTAMPADD
función.
La sintaxis básica:
TIMESTAMPADD(unit,value,datetime);
La unidad puede ser:
- FRAC_SEGUNDO
- SEGUNDO
- MINUTO
- HORA
- DÍA
- SEMANA
- MES
- TRIMESTRE
- AÑO
Por ejemplo, el siguiente comando agrega 3 días a la fecha especificada:
SELECT TIMESTAMPADD(DAY,3,'2021-01-18');
Por lo tanto, la salida muestra:
2021-01-21
TIMESTAMPDIFF
Para calcular la diferencia entre dos expresiones de fecha/fechahora, use TIMESTAMPDIFF
. La función resta un valor de fecha y hora del otro en la unidad especificada.
La sintaxis básica:
TIMESTAMPDIFF(unit,datetime1,datetime2);
Puede encontrar una lista con diferentes tipos de unidades, consulte la lista en la sección anterior.
Por ejemplo, puede calcular la diferencia entre las siguientes dos fechas en días:
SELECT TIMESTAMPDIFF(DAY,3,'2021-01-18');
Donde el resultado es:
13
UNIX_TIMESTAMP
Devuelve una marca de tiempo Unix de una expresión de fecha/fechahora con UNIX_TIMESTAMP
función. La marca de tiempo de Unix representa los segundos entre la fecha y hora especificada y "1970-01-01 00:00:00" UTC.
La sintaxis básica:
UNIX_TIMESTAMP(datetime);
Por ejemplo, ejecutando el siguiente comando:
SELECT UNIX_TIMESTAMP('2021-01-25 17:33:00');
Da el resultado:
1611595980
UTC_TIMESTAMP
Devuelve el valor de fecha y hora UTC actual con UTC_TIMESTAMP
. Devuelve el valor de fecha y hora en formato "AAAA-MM-DD HH:MM:SS" o "AAAAMMDDHHMMSS.uuuuuu".
La sintaxis básica:
UTC_TIMESTAMP(datetime);
Por ejemplo, el comando:
SELECT UTC_TIMESTAMP();
Devuelve la salida en el mismo formato que el siguiente:
2021-01-25 23:18:06
Funciones relacionadas con el día/semana/mes/año
DÍA
Devuelve el día de un mes a partir de una expresión de fecha/fechahora especificada con DAY
función.
La sintaxis básica:
DAY(datetime);
Si ejecuta el siguiente comando:
SELECT DAY('2021-01-26 12:32:00');
La salida devuelve el resultado:
26
NOMBRE DEL DÍA
Devuelve el nombre del día de la semana a partir de una expresión de fecha/fechahora específica mediante DAYNAME
función.
La sintaxis básica:
DAYNAME(datetime);
Por ejemplo, cuando ejecuta el comando:
SELECT DAYNAME('2021-01-26 12:32:00');
MySQL responde con el resultado:
Tuesday
DÍA DEL MES
Devuelve el día de un mes a partir de una expresión de fecha/fechahora especificada con DAYOFMONTH
.
La sintaxis básica:
DAYOFMONTH(datetime);
Por ejemplo, cuando ejecuta el comando:
SELECT DAYOFMONTH('2021-01-26 12:32:00');
MySQL responde con el resultado:
26
DÍA DE LA SEMANA
Devuelve el día de la semana en valor numérico de la expresión de fecha/fechahora especificada usando DAYOFWEEK
.
La sintaxis básica:
DAYOFWEEK(datetime);
Ejecutando el siguiente comando:
SELECT DAYOFWEEK('2021-01-26 12:32:00');
Da la respuesta:
3
DÍA DEL AÑO
Devuelve el día del año a partir de la expresión de fecha/fechahora especificada mediante la función DAYOFYEAR
.
La sintaxis básica:
DAYOFYEAR(datetime);
Por ejemplo, cuando ejecuta el comando:
SELECT DAYOFYEAR('2021-02-26 12:32:00');
La salida da el resultado:
57
DESDE_DÍAS
Devuelve una expresión de fecha a partir de una representación numérica de un día usando la función FROM_DAYS
.
La sintaxis básica:
FROM_DAYS(number);
Por ejemplo, ejecutando:
SELECT FROM_DAYS(738181);
El indicador de MySQL responde con el resultado:
2021-01-26
ÚLTIMO_DÍA
Devuelve el último día del mes a partir de una fecha/fechahora especificada con LAST_DAY
función.
La sintaxis básica:
LAST_DAY(date);
Por ejemplo, si ejecuta el siguiente comando:
SELECT LAST_DAY('2021-01-26');
La salida responde con:
31
MES
Devuelve el mes (en valor numérico) a partir de una fecha/fechahora específica usando el MONTH
función.
La sintaxis básica:
MONTH(date);
Por ejemplo, cuando ejecuta:
SELECT MONTH('2021-01-26');
MySQL responde con:
1
NOMBRE DEL MES
Devuelve el nombre del mes a partir de una fecha/fechahora especificada con MONTHNAME
función.
La sintaxis básica:
MONTHNAME(date);
Si ejecuta el comando:
SELECT MONTH('2021-01-26');
Obtienes la siguiente respuesta:
January
PERIOD_ADD
Para agregar un número específico de meses a un período, use el PERIOD_ADD
función.
La sintaxis básica:
PERIOD_ADD(period,number);
El período se define en el formato YYMM o YYYYMM, mientras que el número es el número de meses que desea agregar.
Por ejemplo:
SELECT PERIOD_ADD(202101, 5);
Da el resultado:
202106
PERIOD_DIFF
Devuelve el número de meses entre dos períodos con PERIOD_DIFF
.
La sintaxis básica:
PERIOD_DIFF(period1,period2);
Cada período debe tener el formato AAMM o AAAAMM.
Por ejemplo:
SELECT PERIOD_DIFF(202101, 202003);
Produce el resultado:
10
TRIMESTRE
Para devolver un cuarto de año a partir de una fecha/fechahora específica, use la función QUARTER
.
La sintaxis básica:
QUARTER(date);
Por ejemplo, ejecutando el comando:
SELECT QUARTER('2021-01-26');
La salida responde con:
1
TO_DAYS
Convierta una expresión de fecha/fechahora en una representación numérica de un día con TO_DAYS
.
La sintaxis básica:
TO_DAYS(datetime);
Por ejemplo, para el comando:
SELECT TO_DAYS('2021-01-26');
El resultado es:
738181
SEMANA
Para devolver el número de semana de una fecha específica, use la función WEEK
.
La sintaxis básica:
WEEK(date);
También puedes incluir el modo argumento, en cuyo caso la sintaxis es WEEK(date,mode);
.
El argumento de modo especifica a partir de qué día comienza la semana. Si no hay argumento, usa 0
modo predeterminado.
La siguiente tabla describe cada modo:
Por ejemplo, si ejecuta:
SELECT WEEK('2021-01-26');
La salida responde con:
4
DÍA DE LA SEMANA
Devuelve el día de la semana a partir de la fecha especificada en valor numérico con WEEKDAY
. Cada número representa uno de los días de la semana:lunes es 0
, martes es 1
, y así sucesivamente.
La sintaxis básica:
WEEKDAY(date);
Por ejemplo, ejecutando el siguiente comando:
SELECT WEEKDAY('2021-01-26');
Da la respuesta:
1
SEMANA DEL AÑO
Para devolver el número de una semana en un año, use el WEEKDAY
función.
La sintaxis básica:
WEEKOFYEAR(date);
Por ejemplo, cuando ejecuta el comando:
SELECT WEEKOFYEAR('2021-01-26');
La salida muestra el resultado:
3
AÑO
Devuelve el año a partir de la fecha especificada con el YEAR
función.
La sintaxis básica:
YEAR(date);
Si ejecuta el siguiente comando:
SELECT YEAR('2021-01-26');
Obtienes el resultado:
2021
AÑO SEMANA
Devuelva el año y el número de semana a partir de la fecha especificada utilizando el YEARWEEK
función.
La sintaxis básica:
YEARWEEK(date);
Puedes agregar un mode
argumento a la sintaxis básica para especificar el día a partir del cual comienza la semana. Para ver una lista de modos y su significado, consulta la tabla en la WEEK
función.
Por ejemplo, cuando ejecuta el comando:
SELECT YEARWEEK('2021-01-26');
La salida muestra:
202104