假设我位于印度,我的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
你能帮我找到更好的解决方案吗? 感谢
答案 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;