我需要将数据库从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
字段一样。