2013-09-26 72 views
2

我有一个MySQL查询保存在数据库中的注释,也节省了我要救时间戳另一个时区设置,我可以做到这一点,通过下面的查询时间戳:我可以在特定时区获得时间戳吗?

INSERT INTO tahminler 
(comment, comment_text, match_id, user_id, timestamp) 
VALUES ('$comment','$comment_text', $id, $user_id, now()) 
+0

MySQL时间戳和日期时间列没有时区的概念。你必须添加一个额外的列来自己存储时区数据。 – GordonM

回答

0

是。你可以在PHP上使用date_default_timezone_set()

<?php 
echo date('Y-m-d H:i:s');// Your local server time 
date_default_timezone_set('America/Los_Angeles'); 
echo "<br>"; 
echo date('Y-m-d H:i:s');// Los Angeles time 

所以你now()date('Y-m-d H:i:s');更换设置您所选择的时区后。

+0

这只适用于以下情况:a)使用系统的每个人都在同一个时区或b)每个用户都有一些时区记录。 – GordonM

+0

完全正确。对于选项b),如果已经有记录,OP可以从此提供的http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone运行switch语句。 –

0

你可以用这一个

//default timezone 
$date = new DateTime(null); 
echo 'Default timezone: '.$date->getTimestamp().'<br />'."\r\n"; 

//America/New_York 
$date = new DateTime(null, new DateTimeZone('America/New_York')); 
echo 'America/New_York: '.$date->getTimestamp().'<br />'."\r\n"; 

尝试拿到常规时间戳,并添加UTC偏移

//America/New_York 
    $date = new DateTime(null, new DateTimeZone('America/New_York')); 
    echo 'America/New_York: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n"; 
0

您可以添加时间戳列这样的改变你的表....

ALTER TABLE `table1` ADD `lastUpdated` TIMESTAMP 
ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 

这会添加一个名为'lastUpdated'的列,其中包含当前日期/时间的默认值。当记录更新时(可以说5分钟后)时间戳会自动更新到当前时间。

相关问题