mysql - 如何在Mysql中以unix毫秒存储日期?

标签 mysql sql

如何在 MYSQL 中以 UNIX 毫秒存储当前日期,例如日期:1388880000000?

现在我将其存储在日期时间中。

最佳答案

不要。 DateTime值应存储为 DateTime ,除非您有充分的理由以其他方式存储它们(例如支持 DateTime 的最小/最大值之外的日期和时间值),否则我建议将其保留在 DateTime 中柱子。

您始终可以在Select期间操纵从数据库返回它们的方式。或者在表示层中。从DateTime返回unix时间,MySql提供了一个内置方法,名为 UNIX_TIMESTAMP 。要返回毫秒数,只需乘以 1000,因为 unix 时间戳是自 1970 年 1 月 1 日以来的秒数(不包括闰秒)。如果你想存储unix时间,你必须使用int数据类型。

请注意,如果您确实存储 unix 时间而不是存储实际的 DateTime DateTime 中的值数据类型列,您将无法轻松使用数据库内置的所有日期时间函数。例如,如果您想找出特定月份有多少行,您首先必须将数据从 int 转换为 datetime,然后才能计算出来。

您还将失去准确性(因为即使在 1 秒分辨率下,unix 时间也是不准确的,因为它忽略了闰秒)。

因此,总结一下 - 当数据库为您提供适合该数据的数据类型时,不要使用不同的数据类型来存储该数据。使用 Date 如果您只想存储日期,则 DateTime 数据类型如果要存储日期时间值,则使用 Time 数据类型如果您想存储一天中的特定时间,请使用数据类型。

附注
处理日期时间值时,特别是如果您必须处理来自多个位置的客户端,请始终仅在数据库中存储 UTC 日期时间,unless, of course, you want to go mad.

关于mysql - 如何在Mysql中以unix毫秒存储日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48973706/

相关文章:

sql - 如何使用 sp_add_job 无限期地每 10 秒运行一次作业?

sql - 将阶段标识符分配给启停事件表

PHP 无法在我的 XAMPP 服务器中正确存储阿拉伯语/波斯语文本

java - 与 Hibernate 额外列查询的多对多关系

带有空 WHERE 的 MySQL 查询 - 索引优化

mysql - SQL JOIN 和从两个表查询的区别

mysql - 跨多对多关系表的唯一约束

mysql - 向部分主键添加约束

MySQL-获取字符串中分隔符之间的值

php - 持续浏览器 session 的临时表