PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了需要在每个连接的PHP / MySQL中使用UTC时间戳转换大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我想独立于服务器上配置的时区,因此在脚本中我将时区设置为:

MysqL_query("SET time_zone = '".date_default_timezone_get()."';");

服务器当前配置为Europe / Moscow,当前为UTC 4

然后在PHP网站中,从数据库中选择如下内容

date_default_timezone_set('Europe/Berlin');
$sth = $dbh->prepare("SET time_zone = '".date_default_timezone_get()."';");
$sth->execute();
$sth = $dbh->prepare("SELECT  * from logs WHERE time like '2011-06-1%'");
$sth->execute();

我正在使用时间戳字段类型,而不是日期时间.

我得到的显示的时间戳不是将来的2小时.

MysqL文档说:

因此,这使我想到了3种可能的情况:

>存储转换有效,请选择“否”:否-因为这样,时间戳记将过去2小时(冬季为1个小时)
>存储转换不起作用,但是选择它:不-因为那样我会看到-1小时的UTC,情况并非如此
>存储转换无效,选择转换无效:看起来像它!

现在,我写入数据库的时间戳已构建并写入PHP端:

$hourprec = "Y-m-d H:00:00";
$hour = date($hourprec); // MysqL compatible
...
replaCE intO logs (time,...) VALUES('".$hour."','"....

我可以想象这会给MysqLs时间转换带来麻烦,因为它以字符串形式出现,我应该执行FROM_UNIXTIME之类的操作.

但是它至少不应该与SELEct一起使用吗?

我想念什么吗?如果要在MysqL数据库中的UTC中正确存储和读取时间戳,但在具有不同时区的脚本中读取/写入时间戳,该怎么办

解决方法:

答案很简单.

上面的方法很好,MysqL不知道任何时区.

您可以使用命令SET time_zone =’UTC’进行测试;

如果您与发问者有相同的问题,则应收到以下错误

#1298 - UnkNown or incorrect time zone: 'UTC'

使用以下命令可以轻松解决此问题:

MysqL_tzinfo_to_sql /usr/share/zoneinfo/|MysqL -u root MysqL -p

大佬总结

以上是大佬教程为你收集整理的需要在每个连接的PHP / MySQL中使用UTC时间戳转换全部内容,希望文章能够帮你解决需要在每个连接的PHP / MySQL中使用UTC时间戳转换所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: