一尘不染

何时使用日期时间或时间戳

mysql

我已经搜索了此文件,但没有明确的答案(尤其是后者)。在什么情况下应该使用日期时间或时间戳记?


阅读 474

收藏
2020-05-17

共1个答案

一尘不染

假设您使用的是MS SQL Server(不是,请参见 下面更新 ):

一个表只能有一个时间戳列。每次插入或更新包含时间戳列的行时,都会更新时间戳列中的值。此属性使timestamp列不适合用作键,尤其是主键。对行进行的任何更新都会更改时间戳记值,从而更改键值。如果列在主键中,则旧键值不再有效,并且引用旧值的外键不再有效。如果在动态游标中引用了表,则所有更新都会更改游标中行的位置。如果该列在索引键中,则对数据行的所有更新也会生成索引的更新。

有关MSDN的信息

如果您需要按行存储日期/时间信息,并且没有更改该日期/时间,请使用DateTime;否则,请使用时间戳。

另请注意: MS SQL Server时间戳字段不是日期也不是时间,它们是数据更改时间的相对顺序的二进制表示。

更新资料

正如您所说的那样,MySQL:

TIMESTAMP值从当前时区转换为UTC以进行存储,然后从UTC转换回当前时区以进行检索。(这仅适用于TIMESTAMP数据类型,不适用于其他类型,例如DATETIME。)

MySQL参考引用

更值得注意的是:

如果您存储TIMESTAMP值,然后更改时区并检索该值,则检索到的值与您存储的值不同。

因此,如果您跨时区使用应用程序,并且需要日期/时间来反映各个用户的设置,请使用时间戳记。如果无论时区如何都需要一致性,请使用Datetime

2020-05-17