sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo almacenar la fecha en milisegundos de Unix en Mysql?

No. DateTime los valores deben almacenarse como DateTime , a menos que tenga una muy buena razón para almacenarlos de otra manera (como para admitir valores de fecha y hora fuera de los valores mínimos/máximos de DateTime ), sugeriría dejarlo en un DateTime columna.

Siempre puede manipular cómo los devuelve desde la base de datos durante Select o en la capa de presentación. Para devolver la hora de Unix desde DateTime , MySql proporciona un método integrado llamado UNIX_TIMESTAMP . Para devolver la cantidad de milisegundos, simplemente multiplique por 1000, ya que la marca de tiempo de Unix es la cantidad de segundos desde el 1 de enero de 1970 (sin incluir los segundos bisiestos). Si desea almacenar la hora de Unix, deberá usar un tipo de datos int.

Tenga en cuenta que si almacena la hora de Unix en lugar de almacenar el DateTime real valor en un DateTime columna de tipo de datos, perderá la capacidad de usar fácilmente todas las funciones de base de datos integradas de fecha y hora. Por ejemplo, si desea averiguar cuántas filas pertenecen a un mes específico, primero deberá traducir los datos de int a datetime, y solo entonces podrá calcular eso.

También perderá precisión (ya que el tiempo de Unix es inexacto incluso en la resolución de 1 segundo, porque ignora los segundos intercalares).

Entonces, para concluir:cuando la base de datos le ofrece un tipo de datos que se ajusta a los datos, no almacene esos datos usando un tipo de datos diferente. use el Date tipo de datos si solo desea almacenar fechas, el DateTime tipo de datos si desea almacenar valores de fecha y hora, y el Time tipo de datos si desea almacenar una hora específica en el día.

P.D.
Cuando se trata de valores de fecha y hora, especialmente si tiene que tratar con clientes de varias ubicaciones, SIEMPRE almacene solo fechas y horas UTC en su base de datos, a menos, por supuesto, que quieras volverte loco.