Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 日期和时间采用服务器所在的时区,而不是服务器当前在特定位置使用的时区_Mysql - Fatal编程技术网

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

Mysql 日期和时间采用服务器所在的时区,而不是服务器当前在特定位置使用的时区,mysql,Mysql,假设我位于印度,我的Mysql数据库服务器存储在Oregon服务器中。因此,当我试图跟踪日期时间(即now())时,每当我对表中的数据执行插入或更新操作时,它总是占用Oregon服务器的时区 我可以使用Mysql服务器所在的系统时区吗 目前,每当我在前端显示datetime时,我都会使用一个函数 CREATE DEFINER=`root`@`localhost` FUNCTION `FnTimeZone`(P_date datetime) RETURNS varchar(100) CHARSET

假设我位于印度,我的Mysql数据库服务器存储在Oregon服务器中。因此,当我试图跟踪日期时间即now())时,每当我对表中的数据执行插入或更新操作时,它总是占用Oregon服务器的时区 我可以使用Mysql服务器所在的系统时区吗

目前,每当我在前端显示datetime时,我都会使用一个函数

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
你能帮我找到更好的解决办法吗?
谢谢

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

  • 系统时区。当服务器启动时,它尝试确定主机的时区,并使用它来设置 系统\时区\系统变量。该值不会更改 此后
您可以在启动时使用--timezone=timezone\u name选项将MySQL服务器的系统时区设置为mysqld\u safe。您还可以设置 在启动mysqld之前,可以通过设置TZ环境变量来实现。这个 --时区或TZ的允许值取决于系统。咨询 您的操作系统文档可以查看哪些值是可接受的

  • 服务器的当前时区。全局时区系统变量表示服务器当前运行的时区。 时区的初始值为“SYSTEM”,表示 服务器时区与系统时区相同
初始全局服务器时区值可以在启动时使用--default timezone=timezone选项显式指定 命令行,也可以在选项文件中使用以下行:

default-time-zone='timezone'
如果您具有超级权限,则可以使用以下语句在运行时设置全局服务器时区值:

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

    mysql> SET GLOBAL time_zone = timezone;
    
    mysql> SET time_zone = timezone;