Maye我错误地使用now()
来存储数据时获取时间戳?
当我向用户显示日期/时间时,他当然希望看到当地时间,如果他输入时间相关数据,而不是我使用now()
,那么他将输入本地日期/时间。
为什么代码会变得混乱 - 处理时间戳的最佳做法是什么? UTC / locla时间?怎么&什么时候调整?
答案 0 :(得分:2)
只需将所有日期存储在timestamp
mysql列类型中,该类型可以处理所有时区问题,而mysql将为您完成所有工作。
因此,在应用程序启动开始时,您只需要指定日期所属的时区所需的时间:
SET time_zone='Asia/Vladivostok'
例如。
此外,在这种情况下,你不应该从php获取任何时间戳,如果你需要插入当前时间 - 你必须使用mysql的NOW()
。
就是这样。
答案 1 :(得分:1)
将所有日期存储在一个时区中,以便它们保持一致。 UTC / GMT + 0对此有好处。
然后使用CONVERT_TZ将输入转换为UTC / GMT + 0或从UTC / GMT + 0转换为用户的时区。
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
既然你所问的都是SQL函数,你应该用你正在使用的RDBMS(MySQL?)而不是PHP标记问题。