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í.

Formatos y unidades válidas en Interval con MySQL

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.

IntervaloDescripción y explicaciónEjemplosRangos, tipos y formatos
MICROSECONDMicrosegundos, un microsegundo es la millonésima parte de un segundo. O sea, un millón de microsegundos es 1 segundo10, 20, 1000Cualquier número entero, si se pasa de un millón, se suman como segundos
SECONDSegundos10, 60, 50Cualquier número entero, si nos pasamos de 60 entonces se suman como minutos
MINUTEMinutos1, 2, 10, 20Número entero, si nos pasamos de 60 entonces se suma como hora
HOURHoras1, 2, 24, Número entero indicando las horas, si nos pasamos de 24 entonces se suman como días
DAYDías10, 20Un número de días, sería como 24 horas
WEEKSemanas, o sea 7 días1, 2, 50, 80Un número entero representando las semanas
MONTHMeses así como los conocemos, sin importar el número de días que tengan1, 2, 3, 50, 20Nú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)
QUARTERNo sé cómo se traduzca del inglés al español, pero representa la cuarta parte de un año, o sea 3 meses1, 2, 3, 4 para un añoNúmero indicando cuántos cuartos de año queremos. 4 de ellos son un año
YEARAños1, 2, 3, 80, 100Un número indicando los años. Por ejemplo, si sumamos un año al 2018 se convierte en 2019
SECOND_MICROSECONDSegundos con microsegundos1.0 sería un segundo, 1.5 un segundo y medio, 0.10 sería un segundo y un décimo de segundoNúmero en formato decimal, por ejemplo 1.0
MINUTE_MICROSECONDMinutos 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_SECONDMinutos con segundos'20:30' serían veinte minutos y medio, como el ejemplo de arriba pero sin microsegundos. Formato en MM:SS
HOUR_MICROSECONDHoras con minutos, segundos y microsegundos'01:50:30.50' sería una hora, cincuenta minutos y treinta segundos y medioFormato en HH:MM:SS.NN
HOUR_SECONDHoras con minutos y segundos'23:50:30' serían 23 horas, 50 minutos y 30 segundosFormato en HH:MM:SS
HOUR_MINUTEHoras con minutos'20:50' serían 20 horas con 50 minutosFormato en HH:MM
DAY_MICROSECONDDí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_SECONDDí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_MINUTEDías con horas y minutos'50 20:30' serían cincuenta días, veinte horas y treinta minutos. De nuevo mira el espacioFormato en DD HH:MM. Hay que fijarse bien en que DD está separado de HH, no es un error de escritura
DAY_HOURDías con horas'85 20' serían 85 días con 20 horasFormato en DD HH
YEAR_MONTHAñ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 restaFormato 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

¿Por qué hay algunos intervalos combinados?

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.

Usos de interval

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.

Ejemplo de todo lo expuesto

Todas las unidades y formatos para interval

Todas las unidades y formatos para interval

He creado un fiddle para que puedas probarlo por ti mismo.

 

No te vayas sin seguirme en Twitter, Facebook y GitHub, así me motivas a escribir más posts.
Igualmente te invito a suscribirte en la parte superior derecha escribiendo tu correo en el formulario.
Si tienes dudas déjalas en un comentario


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB. Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron. Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scripts La plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C. Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

1 Comment

Sumar y restar fechas con MySQL usando date_add y date_sub - Parzibyte's blog · diciembre 5, 2018 a las 3:12 pm

[…] Intervalos para date_sub y date_add en MySQL. […]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: