0

将这个项目提炼成最简单的术语;

  1. 用户点击一个按钮,一个带有 NOW() 时间戳的记录被创建。
  2. NOW() 当然等于服务器上创建记录的时间。
  3. 我需要根据他们的时区向他们展示统计数据,而不是我的。

在 MySql 中与时区偏移对齐的最佳方法是什么?是否有专门用于处理偏移量的特定字段格式?

我需要按照以下方式运行:

   SELECT DATE_FORMAT(b_stamp, '%W') AS week_day, count(*) AS b_total, b_stamp
      FROM table
      WHERE
   (b_stamp >= DATE_SUB(NOW(), INTERVAL 7 DAY))
      AND
   (user_id = '$user_id') GROUP BY week_day ORDER BY b_stamp DESC

我宁愿不问用户他们在哪个时区,我认为 JS 是从浏览器中提取这些数据的唯一方法。也许如果他们在移动设备上,而且这不是一个基于网络的应用程序,我可以得到它,但这可能不是这个方向。

我正在考虑最好的方法可能是确定它们的偏移量,并将变量设置为“server_time”+/- their_offset。这使得它看起来好像服务器位于不同的位置。我相信这将是最好的,因为我不需要向代码中添加额外的 +/- 逻辑,使其变得混乱并使其变得丑陋。

另一方面,这会将带有时间戳的数据放入数据库中。

建议?

4

2 回答 2

1

您可以使用 javascript 从客户端获取时区,如下所示:

var timeZone=(new Date().gettimezoneOffset()/60)*(-1);

打印变量并在使用前进行测试。我认为这将是您最简单的选择。

于 2009-04-22T02:37:59.073 回答
0

除了使用 JS,您还可以获取他们的 IP 地址的时区(使用类似 ip2location 的东西),然后使用 MySQL 的 CONVERT_TZ() 函数。

于 2009-04-22T03:59:07.490 回答