我有以秒为单位的 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
我可以将 select 的 mysql 运行时减去 unix_timestamp 字段 $user_timezone_offset 吗?
我正在插入 UTC,这显然是我需要的,但是对于用户本地时间的选择,我需要以某种方式将偏移量应用于存储在数据库中的时间戳。
编辑:我刚遇到这个:
$user_timezone_offset="-2:00";
FROM_UNIXTIME(CONVERT_TZ(unix_timestamp,'+00:00','$user_timezone_offset'))
需要知道如何将其应用于选择查询,从而将 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
在选择上进行转换-在那里它没有被转换,另一个
Unix_Timestamp(CONVERT_TZ(FROM_UNIXTIME(unix_timestamp), '+00:00', '$user_timezone_offset'))
每次要对转换后的值进行检查时,都必须调用 unix_timestamp 进行“转换”。