何时使用日期时间或时间戳
这个问题在这里已经有了答案:
假设你正在使用MS SQL Server(你不是,请参阅下面的更新 ):
一个表格只能有一个时间戳列。 每次插入或更新包含时间戳列的行时,时间戳列中的值都会更新。 此属性使时间戳列成为键的一个可选候选者,特别是主键。 对行进行的任何更新都会更改时间戳值,从而更改键值。 如果该列位于主键中,则旧键值不再有效,并且引用旧值的外键不再有效。 如果在动态游标中引用表,则所有更新都将更改游标中行的位置。 如果列处于索引键中,则对数据行的所有更新也会生成索引的更新。
有关MSDN的信息
如果您需要针对一行存储日期/时间信息,并且没有该日期/时间更改,请使用DateTime; 否则,使用时间戳。
另请注意: MS SQL Server时间戳记字段不是日期和时间,它们是数据更改时的相对序列的二进制表示形式。
更新
正如你已经更新说MySQL:
将TIMESTAMP值从当前时区转换为UTC存储,并从UTC转换回当前时区以供检索。 (这仅出现在TIMESTAMP数据类型中,而不适用于其他类型,如DATETIME。)
从MySQL参考引用
更值得注意的是:
如果您存储TIMESTAMP值,然后更改时区并检索该值,则检索到的值与您存储的值不同。
因此,如果您跨时区使用应用程序,并需要日期/时间来反映个人用户设置,请使用时间戳。 如果您需要一致性而不考虑时区,请使用日期时间
看看我应该使用'datetime'还是'timestamp'? 它有关于该主题的全面报道。
编辑 - 只是为了总结MySQL的属性和我的经验 -
时间戳 -
a)每列4字节(日期时间为8)
b)作为整数内部存储
c)有时区信息!
d)所有的DATE()/ DAY()/ MONTH()函数都适用于TIMESTAMP和DATETIME
e)在MySQL中,每个表可以有多个TIMESTAMPS
f)表中的第一个TIMESTAMP被自动更新...
我已经使用多个时间戳用于其他目的..需要节省的空间(必须非常小心,并牢记所有这些问题。
我的建议是,只有在你知道自己在做什么的情况下,才能使用TIMESTAMP进行非时间戳记。如果SPACE是一个巨大的问题(例如 - 15,000,000行,增长和8个日期!))
我没有清楚地回答你的问题,但请看下面的链接。 它可能会帮助你
http://www.sqlteam.com/article/timestamps-vs-datetime-data-types
链接地址: http://www.djcxy.com/p/25097.html