如何在 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/