【发布时间】:2012-10-27 20:37:03
【问题描述】:
我有以秒为单位的 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 的选择转换为在 select 中进行比较,并且结果也会针对 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 进行“转换”。
【问题讨论】:
-
为什么要在mySQL中做这个,你用什么查询数据库就不能做计算吗?
标签: mysql time timestamp utc convert-tz