时间戳vs.日期时间MySQL


TIMESTAMP vs. DATETIME MySQL

我需要将数据库从SQL转换为MySQL,并且成功地做到了,然而,这个问题现在更适合MySQL。

我注意到我能够将DateTime字符串插入Timestamp列类型,这一切都很好,从我听到的时间戳接受日期时间或实际时间戳,但是,我现在对"ON UPDATE CURRENT_TIMESTAMP"很好奇,因为我在数据库的一列上有它,因为它只能在Timestamp类型上使用。当它基于CURRENT_TIMESTAMP更新时,会使用一个不是格式的时间戳:YYYY-MM-DD HH:MM:SS吗?

这将如何影响我从该列中提取的数据?

例如,当一些日期可能是数字时间戳,而其他日期可能是DATETIME格式时,从TIMESTAMP列获取当前日期/时间是否会很困难?我是否应该只使用DATETIME作为该列的类型,而不使用ON_UPDATE功能来避免来自数据库的混合数据的问题?

内部所有TIMESTAMP数据存储为4字节整数,表示自Unix纪元以来的秒数。您在软件中看到的呈现取决于您的软件如何呈现这些数据。例如,如果您将您的时区更改为不同的时区,它将对从TIMESTAMP列读取的数据产生影响(因为Unix epoch是UTC)

将不会有数据混合。MySQL将负责将YYYY-MM-DD HH:MM:SS转换为时间戳。不过要注意时区!

当查询TIMESTAMP列时,MySQL默认将它们格式化为人类可读的形式,所以不要期望从中获得整数。您将得到一个YYYY-MM-DD HH:MM:SS格式的字符串,就像DATETIME字段一样。