如何更改mySQL NOW()以便它适合另一个时区?

时间:2017-03-23 17:48:21

标签: mysql datetime timezone

我有以下问题: 我使用的是几年前为我制作的朋友的php / mysql脚本。 Normaly我会在我的国家的服务器上托管该脚本,所以一切都没有问题,因为servertime将是我当地的时间(欧洲/柏林)。

但是现在我在美国(纽约州)托管了我的域名,我的脚本在数据库中添加了错误的时间(目前为-5小时)。

所以不添加 2017-03-23 19:00 ,而是添加 2017-03-23 14:00

所以我的解决方案是改变mySQL查询并减去5小时,它适合现在......但是夏天/冬天的变化我将不得不再次调整脚本:(

所以我的问题是: 如何改变我的NOW()以适应我的时区(欧洲/柏林)?

这是我的一个问题,所以你可以帮我编辑它,因为我是一个总菜鸟,需要我们的帮助,非常感谢你!

$insQuery = "INSERT INTO tbl_anmeldungen (fld_raid_id,fld_user_id,fld_anmelddate,fld_anmelde_notiz,fld_random) VALUES ('$raidID','$userID',NOW(),'$notiz','$myrand')";

所有需要更改/编辑的是 NOW()部分,以便将其修复到我的时区。如果这是不可能的,我如何更改NOW()部分以便减去5个小时?

非常感谢你的帮助!谢谢!

2 个答案:

答案 0 :(得分:0)

我从其他用户那里找到了其他一些“想法”:

  

打开与MySQL的连接后,运行以下查询:   SET time_zone = timezone;   然后,您执行的所有功能都将针对该连接运行该时区(即,直到您关闭数据库的“链接”“。

所以有人可以告诉我以下是否有效?

  

$ conn = mysql_connect($ dbhostname,$ dbusername,$ dbpassword)或die(“db”   down ...“); mysql_select_db($ dbname);

     

SET time_zone =“Europe / Berlin”;

然后我所有的NOW()都会使用我的时区,对吧? 请参阅以下链接: https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

答案 1 :(得分:0)

我要感谢User Barmar!

他并没有完全或详细地帮助我,但是他把我带到了正确的道路上;)我已经修好了#34;我现在的问题是:

CONVERT_TZ(NOW(),' 00:00',' 5:00&#39)

现在mysql在我的数据库中输入了正确的时间(加入了5个小时的时间,即纽约,以适应我的时区,即欧洲/柏林)

它的工作原理! ......但是:

这只会在某些变化/冬季变化之前有效。然后我将必须修复我的所有代码并使其再次适应+4或+6小时。

所以这只是一个半专业的fid。如果有人知道更好的方法来实现正确的时区"名称"所以夏天/冬天的变化会自动调整,我会非常高兴!