将当前日期时间存储在数据库中的最佳属性

时间:2014-12-04 20:18:01

标签: php mysql datetime

我将用户的注册时间存储为DATETIME,如下所示

+-----+--------------------+
| id  |     Join_Date      |
+-----+--------------------+
|  1  | 2014-12-5 03:21:46 |
+-----+--------------------+
|  2  | 2014-12-3 03:21:46 |
+-----+--------------------+

这会对国家产生影响吗?

假设在中国可能当地时间是凌晨3点,因此数据库将日期时间存储为凌晨3点,而在印度当地时间早上5点,因此数据库将日期时间存储为凌晨5点。这个逻辑是否正确?如果是,这不是我想要的。我想要的是将日期时间存储在相同的时间戳中。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

将其存储为DATETIME数据类型是要使用的最佳数据类型。但是您应该将日期存储为UTC日期,然后将其转换为您需要的时区。

这样,时区在各个时区都是一致的。否则,您可以将它们全部存储在数据库中,包括时区。例如,在MS Sql Server中,您可以使用datetimeoffset

答案 1 :(得分:0)

很少需要使用服务器以外的语言环境来存储日期时间信息。大多数情况下,日期时间事件由服务器计算,因此除非您存储用户提供的值(例如,出生日期),否则应将其存储为UTC。

而且,即使使用大多数用户提供的日期时间值(例如,安排约会),您也必须将该值标准化为UTC,然后再将其存储在数据库中。这样,即使用户时区发生变化(例如,在旅行期间,或夏令时有效),日期也将保持一致。