日期和时间采用托管服务器的时区,而不是服务器当前在特定位置使用的位置

时间:2016-04-18 10:56:50

标签: mysql

假设我位于印度,我的Mysql数据库服务器存储在Oregon服务器中。所以当我试图跟踪 datetime 即now())时我执行表中数据的插入或更新操作。它始终采用Oregon服务器的时区 我可以使用托管我的Mysql服务器的系统时区吗?

目前,每当我用来在前端显示日期时间时,我都会使用一个函数

CREATE DEFINER=`root`@`localhost` FUNCTION `FnTimeZone`(P_date datetime) RETURNS varchar(100) CHARSET latin1
BEGIN
declare returnDate varchar(100);

 Select convert_tz(P_date,'+00:00','+00:00') into returnDate;

RETURN returnDate;
END

你能帮我找到更好的解决方案吗? 感谢

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式配置mysql使用的时区。 MySQL Server Time Zone Support上的Mysql文档列出了所有这些选项:

  
      
  • 系统时区。当服务器启动时,它会尝试确定主机的时区并使用它来设置   system_time_zone系统变量。值不会改变   此后。
  •   
     

您可以使用mysqld_safe的--timezone = timezone_name选项在启动时为MySQL服务器设置系统时区。你也可以设置   它通过在启动mysqld之前设置TZ环境变量来实现。该   --timezone或TZ的允许值取决于系统。请教   您的操作系统文档,以查看可接受的值。

     
      
  • 服务器的当前时区。全局time_zone系统变量指示服务器当前运行的时区。   time_zone的初始值是' SYSTEM',表示   服务器时区与系统时区相同。
  •   
     

可以在启动时使用--default-time-zone = timezone选项显式指定初始全局服务器时区值   命令行,或者您可以在选项文件中使用以下行:

default-time-zone='timezone'
     

如果您具有SUPER权限,则可以使用以下语句在运行时设置全局服务器时区值:

mysql> SET GLOBAL time_zone = timezone;
     
      
  • 每个连接时区。连接的每个客户端都有自己的时区设置,由会话time_zone变量给出。原来,   session变量从全局time_zone获取其值   变量,但客户端可以使用此更改自己的时区   语句:

    mysql> SET time_zone = timezone;
    
  •