Debo permitir que mis usuarios realicen una actualización con 24 horas de retraso desde su actualización anterior, porque las operaciones de fecha en este caso estarán en el backend, pero en el servidor web, puedo almacenar la fecha de Javascript como una cadena en la base de datos y cuando tengo que calcular la diferencia entre 2 fechas, puedo consultar la última fecha de actualización de la base de datos y analizarla en un objeto de fecha JS, ¿es seguro hacerlo?
¿Es seguro almacenar fechas como una cadena en mysql?
Es seguro siempre que el formato que use para representar sus fechas no sea ambiguo (es decir, cada valor se asigna a una fecha única).
Pero siempre es ineficiente no usar el tipo de datos adecuado para almacenar un valor. Tarde o temprano, se enfrentará a la necesidad de realizar algún cálculo de fechas en la base de datos (ordenar, filtrar, agregar, ...): almacenar sus fechas como cadenas hará que dicha operación sea más compleja de lo necesario (la sobrecarga varía según el formato que elija) y mucho menos eficiente (normalmente necesitaría traducir todas las cadenas a fechas antes de poder operar con ellas).
Por otro lado, usar el tipo de datos adecuado desde el principio no complica las cosas en la interfaz, especialmente en MySQL. Solo necesita formatear sus cadenas correctamente ( 'YYYY-MM-DD HH:MI:SS' ) antes de pasarlas a la base de datos, y MySQL felizmente las tratará como fechas.
Lo es, a menos que sus cadenas de fecha sean únicas. Puede especificar una cláusula ÚNICA para ello. Pero no hay razón para hacerlo, porque MySql proporciona 5 tipos de datos de fecha/hora incorporados ( FECHA, FECHAHORA, MARCA DE TIEMPO, HORA, AÑO (M )). Aún así, si guarda las fechas como una cadena, es posible que tenga problemas más adelante para extraer las fechas en el formato correcto.
Normalmente almaceno la fecha y la hora en ambos formatos, como una cadena y en el formato de base de datos nativo. A pesar de las desventajas de algún procesamiento adicional y espacio de almacenamiento adicional, lo encuentro útil porque todas mis consultas de búsqueda e informes se basan en el formato de texto. Esto hace que mi aplicación sea independiente de la base de datos, ya que las comparaciones de texto son las mismas en todas las bases de datos principales, mientras que los formatos de fecha y hora varían significativamente entre las diferentes bases de datos. Utilizo las fechas y horas almacenadas en el formato de la base de datos nativa para los cálculos basados en fechas.