Mysql 日期和时间采用服务器所在的时区,而不是服务器当前在特定位置使用的时区
假设我位于印度,我的Mysql数据库服务器存储在Oregon服务器中。因此,当我试图跟踪日期时间(即now())时,每当我对表中的数据执行插入或更新操作时,它总是占用Oregon服务器的时区 我可以使用Mysql服务器所在的系统时区吗 目前,每当我在前端显示datetime时,我都会使用一个函数Mysql 日期和时间采用服务器所在的时区,而不是服务器当前在特定位置使用的时区,mysql,Mysql,假设我位于印度,我的Mysql数据库服务器存储在Oregon服务器中。因此,当我试图跟踪日期时间(即now())时,每当我对表中的数据执行插入或更新操作时,它总是占用Oregon服务器的时区 我可以使用Mysql服务器所在的系统时区吗 目前,每当我在前端显示datetime时,我都会使用一个函数 CREATE DEFINER=`root`@`localhost` FUNCTION `FnTimeZone`(P_date datetime) RETURNS varchar(100) CHARSET
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文档为您列出了所有这些选项:
- 系统时区。当服务器启动时,它尝试确定主机的时区,并使用它来设置 系统\时区\系统变量。该值不会更改 此后
- 服务器的当前时区。全局时区系统变量表示服务器当前运行的时区。 时区的初始值为“SYSTEM”,表示 服务器时区与系统时区相同
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;