我需要将数据库从SQL转换为MySQL并成功完成,但是,这个问题现在更适合MySQL。
我注意到我能够将DateTime
字符串插入到Timestamp
列类型中,这一切都很好,从我听到的Timestamp接受DateTime或实际时间戳的方面来看,然而,我对"ON UPDATE CURRENT_TIMESTAMP"
现在感到好奇,因为我在数据库的一列上有它,因为它只能在Timestamp
类型上使用。当基于YYYY-MM-DD HH:MM:SS
更新时,它是否会使用格式为CURRENT_TIMESTAMP
的时间戳?
这对我从这个专栏中提取的数据有何影响?
例如,当某些日期可能是数字时间戳时,是否很难从TIMESTAMP列获取当前日期/时间,而其他日期/时间可能是DATETIME格式?我是否应该使用DATETIME作为此列的类型而没有ON_UPDATE
能够避免来自数据库的混合数据出现问题?
答案 0 :(得分:3)
内部所有TIMESTAMP
数据都存储为4字节整数,表示自Unix epoch以来的秒数。您在软件中看到的内容取决于您的软件如何显示此数据。例如,如果您将时区更改为不同的时区,则会对从TIMESTAMP
列读取的数据产生影响(因为Unix纪元是UTC格式)
不会混合数据。 MySQL将负责将您的YYYY-MM-DD HH:MM:SS
转换为时间戳。但要警惕时区!
在查询TIMESTAMP
列时,MySQL默认会以人类可读的形式对它们进行格式化,因此不要期望从这些列中获取整数。您将获得一个格式为YYYY-MM-DD HH:MM:SS
的字符串,就像DATETIME
字段一样。