我将用户的注册时间存储为DATETIME,如下所示
+-----+--------------------+
| id | Join_Date |
+-----+--------------------+
| 1 | 2014-12-5 03:21:46 |
+-----+--------------------+
| 2 | 2014-12-3 03:21:46 |
+-----+--------------------+
这会对国家产生影响吗?
假设在中国可能当地时间是凌晨3点,因此数据库将日期时间存储为凌晨3点,而在印度当地时间早上5点,因此数据库将日期时间存储为凌晨5点。这个逻辑是否正确?如果是,这不是我想要的。我想要的是将日期时间存储在相同的时间戳中。我怎么能这样做?
答案 0 :(得分:0)
将其存储为DATETIME数据类型是要使用的最佳数据类型。但是您应该将日期存储为UTC日期,然后将其转换为您需要的时区。
这样,时区在各个时区都是一致的。否则,您可以将它们全部存储在数据库中,包括时区。例如,在MS Sql Server中,您可以使用datetimeoffset。
答案 1 :(得分:0)
很少需要使用服务器以外的语言环境来存储日期时间信息。大多数情况下,日期时间事件由服务器计算,因此除非您存储用户提供的值(例如,出生日期),否则应将其存储为UTC。
而且,即使使用大多数用户提供的日期时间值(例如,安排约会),您也必须将该值标准化为UTC,然后再将其存储在数据库中。这样,即使用户时区发生变化(例如,在旅行期间,或夏令时有效),日期也将保持一致。