您建议使用datetime或timestamp字段吗?为什么(使用MySQL)?
我在服务器端使用PHP。
您建议使用datetime或timestamp字段吗?为什么(使用MySQL)?
我在服务器端使用PHP。
当前回答
时间戳是计算机通过网络时间协议(NTP)记录的事件的当前时间。
datetime是在PHP配置中设置的当前时区。
其他回答
MySQL中的时间戳通常用于跟踪记录的更改,并且经常在每次更改记录时更新。如果要存储特定值,应使用datetime字段。
如果您希望在使用UNIX时间戳或本机MySQL日期时间字段之间做出选择,请使用本机datetime格式。您可以通过这种方式在MySQL中进行计算(“SELECT DATE_ADD(my_datetime,INTERVAL 1 DAY)”),如果您想用PHP对记录进行操作,那么在查询记录时,很容易将值的格式更改为UNIX时间戳(“SELECT UNIX_timestamp(my_datatime)”)。
主要区别在于DATETIME是常量,而TIMESTAMP受时区设置的影响。
因此,只有当您已经或者将来可能已经跨时区同步集群时,这才是重要的。
简单地说:如果我在澳大利亚有一个数据库,并转储该数据库以同步/填充美国的数据库,则TIMESTAMP将更新以反映新时区中事件的实时,而DATETIME仍将反映非时区中事件发生的时间。
DATETIME的一个很好的例子是在Facebook中使用TIMESTAMP,在那里他们的服务器从来都不太确定跨时区发生的时间。有一次,我正在进行一次谈话,在谈话中,时间说我在消息实际发送之前回复消息。(当然,如果时间是发布的而不是同步的,这也可能是由于消息传递软件中的时区转换错误造成的。)
当您有来自不同国家、不同时区的游客时,TIMESTAMP非常有用。您可以轻松地将TIMESTAMP转换为任何国家/地区的时区
主要区别在于
时间戳上的索引-有效日期时间上的索引-不起作用
看看这篇文章,看看Datetime索引的问题
DATETIME、TIMESTAMP和DATE之间的比较
那是什么[分数]?
DATETIME或TIMESTAMP值可以包含尾随小数秒部分,精度高达微秒(6位数)。在里面特别是,插入DATETIME的值中的任何小数部分或TIMESTAMP列被存储而不是丢弃。这当然是可选的。
来源:
MySQL日期/时间数据类型参考MySQL存储要求参考