我计划在php中使用time()捕获用户启动的活动的开始和结束。我不确定这是否是捕获开始/结束时间的最佳方式。无论如何,数据将存储在MySQL中,但我不知道我应该使用哪种数据类型。 根据我在stackoverflow上读到的答案,使用的数据类型取决于应用程序的用途。
申请的目的
更多信息 如果重复某项活动,将为其制作新记录。记录不会更新。
起初,我曾计划在MySQL中存储unix时间戳(作为整数数据类型?),但据我所知这是一个坏主意,因为我将失去很多MySQL处理信息的能力。如果我将信息存储为DATETIME,但随后移动服务器,则所有时间都将根据服务器的本地时间而改变。我发现令人困惑的是MySQL中的TIMESTAMP与unix时间戳不同 - 如果我使用time(),这就是我将要获得的。
我知道unix时间戳只能为某些系统保留最多2038的日期,但这不是一个问题(目前)。
问题:我应该使用time()来捕获用户启动的活动的开始和结束时间吗?根据申请的目的,what datatype should I use to store the start and stop of user initiated activities?
感谢
感谢大家的答案。 TBH我还不确定,所以我还在做一些研究。我选择了TIMESTAMPS选项,因为我真的想用UTC(GMT)存储我的信息。遗憾的是,我将失去一些内置时间函数的MySQL。无论如何,再次感谢您的回答。
答案 0 :(得分:4)
使用DATETIME存储时间并使用date('Y-m-d H:i:s')
获取当前存储时间。当您获取此值时,您将获得此格式的时间。
要将其转换为时间戳,请使用$timestamp=strtotime($fetchedValue)
要以其他格式显示,请使用date('H:i',$timestamp)
。阅读php日期手册中的格式
TIMESTAMP只能在1970年1月1日之后存储值,因为它存储时区数据。 因此,如果您尝试在1970年1月1日之前存储日期,则最好使用DATETIME。
坦率地说,只有在两台具有不同时区的计算机之间主动同步原始数据时,TIMESTAMP才有用
答案 1 :(得分:4)