manejo de cadenas en MySQL - dias Calcular desde la fecha

oscuro:

Tengo una tabla que tiene este aspecto:

table
---------------------------------------
id        last_update
---------------------------------------
1         2020-02-22T00:32:04.254975Z
2         2020-02-22T02:09:27.057131Z
3         2020-02-22T01:38:48.739303Z
4         2020-02-21T06:19:17.832257Z
5         2020-02-14T03:10:02.551126Z
6         2020-02-21T23:17:01.907037Z

id es INT y last_update es VARCHAR (debido a que el formato no es compatible como un tipo FECHA HORA en MySQL).

Lo que quiero hacer es crear una nueva columna llamada "days_since_last_update" que calcula el número de días entre la fecha actual y el "LAST_UPDATED" fecha.

¿Cómo se puede hacer esto en una consulta de MySQL?

Gracias x

Tim Biegeleisen:

Usted debe estar almacenando sus marcas de tiempo en una columna apropiada de fecha y hora. Una vez dicho esto, podemos tratar de trabajar en torno a las fechas de texto usando STR_TO_DATE. De hecho, me sugieren no agregar una nueva columna, ya que su preguntan es sólo para los datos derivados. En lugar de ello, generar esta columna cuando se consulta:

SELECT
    id,
    last_update,
    DATEDIFF(STR_TO_DATE(last_update, '%Y-%m-%dT%H:%i:%s'),
             (SELECT STR_TO_DATE(t2.last_update, '%Y-%m-%dT%H:%i:%s')
              FROM yourTable t2
              WHERE t2.id < t1.id ORDER BY t2.id DESC)) AS days_since_last_update
FROM yourTable t1
ORDER BY t1.id;

Esto colocaría a los primeros días desde la última actualización del valor que NULL, como no hay actualización no antes registrada para la tabla. Sin embargo, si quieres un valor predeterminado, que puede fácilmente ser incluidos.

Si por el contrario desea que la diferencia en días entre la last_updatecolumna y la fecha de hoy, a continuación, utilizar:

SELECT
    id,
    last_update,
    DATEDIFF(CURDATE(),
             STR_TO_DATE(last_update, '%Y-%m-%dT%H:%i:%s')) AS days_since_last_update
FROM yourTable
ORDER BY id;

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=339421&siteId=1
Recomendado
Clasificación