Introducción

Hoy me vi en la necesidad de calcular el tiempo transcurrido entre dos fechas en el motor de base de datos MySQL.

El problema era calcular los años que han pasado desde una fecha hasta hoy.

Calcular diferencia entre dos fechas con MySQL

Para seleccionar la diferencia en años, meses, o días podemos utilizar timestampdiff. Es una función que toma 3 argumentos:

  • La forma en la que queremos obtener los resultados. Por ejemplo, meses, años o días
  • La fecha 1
  • La fecha 2

Veamos algunos ejemplos

Diferencia en años

Para saber cuántos años han pasado en MySQL podemos hacer esto:

Eso daría un resultado de 20, como se puede ver a continuación:

Claro que también podemos aplicarlo a datos ya existentes. Por ejemplo, si deseara calcular la edad de algunos alumnos (a la fecha actual) de una base de datos sería así:

Recordemos que el tercer argumento (la fecha actual) puede ser pasado con un lenguaje de programación, o calculado con CURDATE. Si utilizamos CURDATE dependemos del servidor MySQL y si su zona horaria está mal, tendremos resultados inesperados.

En fin, si no nos importa, los resultados son los mismos:

Diferencia de fechas en meses

Para hacerlo con meses, es por ejemplo:

Si lo ejecuto:

Igualmente podemos calcularlo con columnas de una base de datos, como con el ejemplo de los años.

Diferencia de fechas en días

Lo mismo pero cambiamos sólo el primer argumento a DAY. Así:

Con estos resultados:

Horas, minutos, segundos

Claro que es posible calcular las horas, minutos o segundos transcurridos. Sólo cambiamos el primer argumento a HOUR, MINUTE o SECOND.

Aquí unos ejemplos:

Así es como podemos calcular o sacar  la diferencia de 2 fechas en MySQL.

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 2:05 pm

[…] vimos cómo calcular la diferencia de fechas en años, meses, o cualquier tipo de medida en MySQL. Ahora veamos cómo operar con fechas; es decir, sumar y restar tiempo a fechas con […]

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: