首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL时区转换

mySQL时区转换
EN

Stack Overflow用户
提问于 2013-09-05 02:39:23
回答 1查看 48关注 0票数 0

在我的数据库中,updateTime被设置为时间戳和CURRENT_TIMESTAMP。但是当我显示数据时,记录在数据库中的时间不是我的本地时区,而是3个小时后。如何通过转换这个SQL语句来减去这3个小时呢?我可以在某种程度上使用CONVERT_TZ与这个语句相关联吗?我不知道怎么做。

代码语言:javascript
复制
SELECT updates.updateID, updates.windowStatus, updates.onDeck, updates.updateComments,    TIME_FORMAT(`updateTime`,'%r') AS showtime FROM updates ORDER BY updates.updateID DESC LIMIT 1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-05 02:53:54

服务器时区可以由每个客户端设置(每个连接),以便在UTC以外的TZ中接收数据。为了做到这一点,您只需使用:

代码语言:javascript
复制
SET time_zone = timezone;

timezone的值可以作为UTC ('+10:00','-6:00',……)的偏移量来表示。或者被命名为时区(如“欧洲/赫尔辛基”、“美国/东方”或“MET”)。因此,如果我没有弄错的话,您可以设置自己的TZ,以便在'+3:00‘中接收数据。

考虑到mysql服务器所做的这种偏移只会影响NOW()CURTIME()以及存储在TIMESTAMP列中并从TIMESTAMP列中检索的值(这正是您要寻找的)。

否则你可以用

代码语言:javascript
复制
SELECT @@global.time_zone, @@session.time_zone;

获取全局和特定于客户的时区。

还有更多的相关信息(这实际上是我所写内容的总结):时区支持(mysql.com)

在你的例子中,你可以拥有这样的东西:

代码语言:javascript
复制
<?php
mysql_select_db($database_casualconnnect, $casualconnnect); 

$set_tz_query = "SET time_zone = '+1:00'";
mysql_query($set_tz_query, $casualconnnect) or die(mysql_error()); 

$query_Recordset2 = "SELECT updates.updateID, updates.windowStatus, 
    TIME_FORMAT(`updateTime`,'%r') AS showtime, updates.onDeck, updates.updateComments 
    FROM updates ORDER BY updates.updateID DESC LIMIT 1"; 

$Recordset2 = mysql_query($query_Recordset2, $casualconnnect) or die(mysql_error()); 
$row_Recordset2 = mysql_fetch_assoc($Recordset2); $totalRows_Recordset2 = mysql_num_rows($Recordset2); 

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

https://stackoverflow.com/questions/18626876

复制
相关文章

相似问题

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