我有UTC的偏移量,数据库中存储的所有时间戳都是UTC的,如何在选择查询期间应用偏移量,
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上:
date_default_timezone_set('UTC');
$user_timezone_offset=-7200; // -2我可以在unix_timestamp字段$user_timezone_offset上减去select的mysql运行时吗?
我插入的是UTC,这显然是我需要的,但对于用户本地时间的选择,我需要以某种方式将偏移量应用于存储在数据库中的时间戳。
编辑:我偶然发现了这个:
$user_timezone_offset="-2:00";
FROM_UNIXTIME(CONVERT_TZ(unix_timestamp,'+00:00','$user_timezone_offset'))我需要知道如何将其应用于select查询,以便在select中转换unix_timestamp的选择以进行比较,并且结果也将针对php的fetch_array进行修改
这似乎就是解决方案:
SELECT *, Unix_Timestamp(CONVERT_TZ(FROM_UNIXTIME(unix_timestamp), '+00:00', '$user_timezone_offset')) as unix_timestamp实际上,这有一个问题-尽管在
mysql_fetch_array($result){ $row['unix_timestamp']; }在选中时进行转换
WHERE unix_timestamp=value //assuming unix_timestamp要在select - in上进行转换,它不会被转换,而是另一个
Unix_Timestamp(CONVERT_TZ(FROM_UNIXTIME(unix_timestamp), '+00:00', '$user_timezone_offset')) 每次对转换后的值进行检查时,必须调用unix_timestamp才能进行“转换”。
发布于 2012-11-08 03:52:53
我认为你可能把问题复杂化了。
时间戳始终为UTC。在PHP中检索时间戳时,它是UTC格式的。
例如,当您使用date()函数转换时区时,它将显示php.ini设置date.timezone设置为的任何时区。
因此,如果您有特定时区的用户,只需在以本地时间显示日期之前使用适当的时区调用date_default_timezone_set()即可。
如果使用DateTime类,则可以在构造对象时指定所需的时区。
除非您有非常特殊的原因,否则在从数据库获取时间戳时不需要执行时区转换。PHP会为你处理这一切。
https://stackoverflow.com/questions/13275650
复制相似问题