当前位置: 首页 > 面试题库 >

MySQL:保留服务器时区还是用户时区?

袁桐
2023-03-14
问题内容

我正在考虑在用户登录时将日期存储在我的网站中,但是我不知道什么是最合乎逻辑的解决方案。

最初,我虽然使用服务器时区,然后使用服务器计算机日期和用户计算机日期之间的差异操作来管理它,但是我也考虑过使用时区和php类日期来更改它的准确性,因此:

<?php
// my server has for example America/New_York timezone
$user_timezone = "Europe/Rome";
date_default_timezone_set ($user_timezone);
$date = date ('Y-m-d H:i:s');
$sql = "UPDATE users SET user_last_modify = '$date', user_timezone = '$user_timezone' WHERE user_id = 'some id' LIMIT 1;";
$res = mysql_query ($sql);
?>

我的问题是,最好的解决方案是保留服务器时区还是使用用户时区?
如果我使用用户时区,是否也应像示例中那样保存时区名称?


问题答案:

我建议使用服务器时区或UTC,而不是为每个用户存储不同的数据。这样,您的数据库将完全一致,并且您可以执行一些操作(例如比较),而不必为每个条目获取
user_timezone 列并执行转换(这不是完全免费的)



 类似资料:
  • 我们将MySQL connector J从5.1.46版本升级到8.0.16。我们的web服务器时区是UTC,现在mysql服务器在IST时区,在升级驱动程序之前,驱动程序的时间戳列值只在UTC中持久化(使用hibenate),但是在移动到J8驱动程序之后,它被保存到mysql服务器时区,即IST。 我们只希望以UTC形式存储/提取时间戳值。

  • 我们的实验室与一家网络公司合作,开发了保护网页不被网络爬虫抓取的技术。测试网站http://119.254.209.77/。我不能在左边的页面上得到网址,比如“检查”。当我点击链接时,它会创建一个网址。使用Python Selenium Firefox,我模拟了点击操作,但是我得到了一个空白页面,而不是真实的数据。如果我只是自己点击链接,它会返回真实的数据。所以我想知道如何服务器可以识别我是一个网

  • 问题内容: 我有一对多关系的两个表。假设对于表格中的每一行,表格中可以有0或更多行引用。 客户想要知道引用某行中有多少行,对于中的所有行。 我可以使用以下查询完成此操作: 但是,如果表和很大,该怎么办?假设有100万行,并且有1000万行。我们还要说,其中99%的行的引用计数少于1000行。假设客户通常一次请求大约100行。 我应该将朴素的count()查询与外键上的索引一起使用,还是最好保留一个

  • 问题内容: 这个问题已经在这里有了答案 : 服务器时区值“ AEST”无法识别或代表多个时区 (11个答案) 10个月前关闭。 我的问题 MySQL连接器“服务器时区值中欧时间”无法识别或代表多个时区。 该项目 小型Web项目,具有:JavaEE,Tomcat 8.5,MySQL,Maven 我的尝试 Maven->将MySQL连接器形式从6.x更改为5.1.39(无更改) 编辑context.x

  • 我正在尝试编写代码,以便使用Java和MySQL与第三方开发的数据库进行互操作。此数据库有一个字段,该字段将字段中的时间戳存储为UTC日期。运行数据库和客户端的服务器的时区被设置为非UTC区(),因此默认情况下,时间戳被错误地读回,就像它是本地时间一样。我正在尝试编写代码以UTC的形式读回它。 我在这里读过几个类似的问题,但没有一个对我有效的答案: MySQL-如何用正确的时区存储时间?(来自Ja