En este post vamos a explicar y ver los formatos que podemos usar a la hora de usar la palabra clave interval
en MySQL. Esto es más que nada una guía detallada de todos los formatos y unidades válidas al usar interval, cosa que se ve más al sumar y restar fechas en MySQL o mejor dicho, al trabajar con fechas.
Me he dado a la tarea de crear una tabla con ejemplos, descripción y rangos que explican todas las unidades posibles.
Mira más tutoriales de MySQL aquí.
Hay múltiples unidades de medida que podemos usar con interval, desde microsegundos hasta años. Vamos a ver cosa por cosa.
Por cierto, me he tomado esta tabla de la página oficial como referencia. Lo que expongo aquí es una traducción con ejemplos y con una explicación más fácil.
|Intervalo|Descripción y explicación|Ejemplos|Rangos, tipos y formatos
|-|-|-|-|
|MICROSECOND|Microsegundos, un microsegundo es la millonésima parte de un segundo. O sea, un millón de microsegundos es 1 segundo|10, 20, 1000|Cualquier número entero, si se pasa de un millón, se suman como segundos
|SECOND|Segundos|10, 60, 50|Cualquier número entero, si nos pasamos de 60 entonces se suman como minutos
|MINUTE|Minutos|1, 2, 10, 20|Número entero, si nos pasamos de 60 entonces se suma como hora
|HOUR|Horas|"1, 2, 24, "|Número entero indicando las horas, si nos pasamos de 24 entonces se suman como días
|DAY|Días|10, 20|Un número de días, sería como 24 horas
|WEEK|Semanas, o sea 7 días|1, 2, 50, 80|Un número entero representando las semanas
|MONTH|Meses así como los conocemos, sin importar el número de días que tengan|1, 2, 3, 50, 20|Número representando los meses que se suman, aquí no se toman en cuenta los días de cada mes, simplemente se suma un mes. Por ejemplo, dentro de un mes será 5 de enero, y dentro de 2, 5 de febrero (suponiendo que leemos esto el 5 de diciembre)
|QUARTER|No sé cómo se traduzca del inglés al español, pero representa la cuarta parte de un año, o sea 3 meses|1, 2, 3, 4 para un año|Número indicando cuántos cuartos de año queremos. 4 de ellos son un año
|YEAR|Años|1, 2, 3, 80, 100|Un número indicando los años. Por ejemplo, si sumamos un año al 2018 se convierte en 2019
|SECOND_MICROSECOND|Segundos con microsegundos|1.0 sería un segundo, 1.5 un segundo y medio, 0.10 sería un segundo y un décimo de segundo|Número en formato decimal, por ejemplo 1.0
|MINUTE_MICROSECOND|Minutos con microsegundos|"'10:30.5' serían 10 minutos con 30 segundos y medio. El formato es HH:SS.NN en donde H son horas, S segundos y N microsegundos"|Formato en HH:SS.NN
|MINUTE_SECOND|Minutos con segundos|"'20:30' serían veinte minutos y medio, como el ejemplo de arriba pero sin microsegundos. "|Formato en MM:SS
|HOUR_MICROSECOND|Horas con minutos, segundos y microsegundos|'01:50:30.50' sería una hora, cincuenta minutos y treinta segundos y medio|Formato en HH:MM:SS.NN
|HOUR_SECOND|Horas con minutos y segundos|'23:50:30' serían 23 horas, 50 minutos y 30 segundos|Formato en HH:MM:SS
|HOUR_MINUTE|Horas con minutos|'20:50' serían 20 horas con 50 minutos|Formato en HH:MM
|DAY_MICROSECOND|Días con horas, minutos, segundos y microsegundos|"'10 12:50:30.11' serían diez días, doce horas con cincuenta minutos, 30 segundos y 11 microsegundos. Fíjate en el espacio "|Formato en DD HH:MM:SS.NN. Hay que fijarse bien en que DD está separado de HH, no es un error de escritura
|DAY_SECOND|Días con horas, minutos y segundos|"'10 12:50:30' serían diez días, doce horas con cincuenta minutos y 30 segundos (como arriba pero sin microsegundos). Fíjate en el espacio "|Formato en DD HH:MM:SS. Hay que fijarse bien en que DD está separado de HH, no es un error de escritura
|DAY_MINUTE|Días con horas y minutos|'50 20:30' serían cincuenta días, veinte horas y treinta minutos. De nuevo mira el espacio|Formato en DD HH:MM. Hay que fijarse bien en que DD está separado de HH, no es un error de escritura
|DAY_HOUR|Días con horas|'85 20' serían 85 días con 20 horas|Formato en DD HH
|YEAR_MONTH|Años con meses|'10-6' representan diez años y seis meses, o diez años y medio. No olvides ponerlos entre comillas, si no se tomará como una resta|Formato en A-MM en donde A es la cantidad de años, y meses la cantidad de meses. Si quieres, puedes poner el cero a la izquierda del mes, aunque es lo mismo
Algunos intervalos puede que no debieran existir a primera vista. Por ejemplo, el de HOUR_MINUTE
que trabaja con horas y minutos, el cual podría ser remplazado únicamente con minutos, pero si analizamos bien y nos preguntamos ¿cómo agrego media hora, en formato de horas? no podemos usar HOUR
con 0.5, así que mejor usamos 00:30
.
Ya sé que podríamos usar MINUTE
con 30, pero la vida no es así de fácil cuando nos enfrentamos a los verdaderos problemas; habrá casos en los que esto será necesario.
Si no sabes cómo usar, recuerda que la sintaxis es:
... interval [cantidad] [medida]
Por ejemplo:
select date_add(now(), interval 10 microsecond);
Ahí, cantidad es 10 y la medida es microsecond.
Por cierto, para aquellas medidas en donde no son únicamente enteros, recuerda encerrar las unidades entre comillas, por ejemplo:
select date_add(now(), interval '10 12:50:30.11' day_microsecond );
Si no ponemos las comillas, nos dará un error de sintaxis o se hará una resta en caso de que sean enteros.
He creado un fiddle para que puedas probarlo por ti mismo.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios
Hola, excelente recopilación me sirvió de mucho.
Por si te quisieras actualizar la lista, QUARTER se traduce como TRIMESTRE.