需要在每个连接的PHP / MySQL中使用UTC时间戳转换
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了需要在每个连接的PHP / MySQL中使用UTC时间戳转换,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1598字,纯文字阅读大概需要3分钟。
内容图文
![需要在每个连接的PHP / MySQL中使用UTC时间戳转换](/upload/InfoBanner/zyjiaocheng/884/d3b3bc5142184a0382a24cead24ccddd.jpg)
我想独立于服务器上配置的时区,因此在脚本中我将时区设置为:
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文档说:
Values for TIMESTAMP columns are
converted from the current time zone
to UTC for storage, and from UTC to
the current time zone for retrieval.
因此,这使我想到了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时间戳转换所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。