首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从应用了偏移量的mysql数据库中获取unix时间戳

问从应用了偏移量的mysql数据库中获取unix时间戳
EN

Stack Overflow用户
提问于 2012-11-08 02:14:13
回答 1查看 1.3K关注 0票数 0

我有UTC的偏移量,数据库中存储的所有时间戳都是UTC的,如何在选择查询期间应用偏移量,

代码语言:javascript
复制
mysql_query("SELECT * FROM table WHERE unix_timestamp=unix_timestamp with offset applied");

mysql_query("INSERT INTO table (unix_timestamp) VALUES(UNIX_TIMESTAMP())");

我想在数据库中插入UTC时间,并在本地时间进行检索。

在PHP上:

代码语言:javascript
复制
date_default_timezone_set('UTC');

$user_timezone_offset=-7200; // -2

我可以在unix_timestamp字段$user_timezone_offset上减去select的mysql运行时吗?

我插入的是UTC,这显然是我需要的,但对于用户本地时间的选择,我需要以某种方式将偏移量应用于存储在数据库中的时间戳。

编辑:我偶然发现了这个:

代码语言:javascript
复制
$user_timezone_offset="-2:00";

FROM_UNIXTIME(CONVERT_TZ(unix_timestamp,'+00:00','$user_timezone_offset'))

我需要知道如何将其应用于select查询,以便在select中转换unix_timestamp的选择以进行比较,并且结果也将针对php的fetch_array进行修改

这似乎就是解决方案:

代码语言:javascript
复制
 SELECT *, Unix_Timestamp(CONVERT_TZ(FROM_UNIXTIME(unix_timestamp), '+00:00', '$user_timezone_offset')) as unix_timestamp

实际上,这有一个问题-尽管在

代码语言:javascript
复制
 mysql_fetch_array($result){ $row['unix_timestamp']; }

在选中时进行转换

代码语言:javascript
复制
  WHERE unix_timestamp=value //assuming unix_timestamp

要在select - in上进行转换,它不会被转换,而是另一个

代码语言:javascript
复制
  Unix_Timestamp(CONVERT_TZ(FROM_UNIXTIME(unix_timestamp), '+00:00', '$user_timezone_offset')) 

每次对转换后的值进行检查时,必须调用unix_timestamp才能进行“转换”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-08 03:52:53

我认为你可能把问题复杂化了。

时间戳始终为UTC。在PHP中检索时间戳时,它是UTC格式的。

例如,当您使用date()函数转换时区时,它将显示php.ini设置date.timezone设置为的任何时区。

因此,如果您有特定时区的用户,只需在以本地时间显示日期之前使用适当的时区调用date_default_timezone_set()即可。

如果使用DateTime类,则可以在构造对象时指定所需的时区。

除非您有非常特殊的原因,否则在从数据库获取时间戳时不需要执行时区转换。PHP会为你处理这一切。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13275650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档