我尝试在 phpmyadmin 中使用以下查询将当前时区更改为亚洲/加尔各答。但它不起作用..
第一个..
set time_zone = '+5:30'
第二.
SET `time_zone` = 'Asia/Kolkata'
第三.
SET GLOBAL time_zone = '+05:30';
4号。
SET GLOBAL time_zone = "Asia/Kolkata";
但这不起作用,显示此错误
#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation
设置全局时区实际上需要 DBMS 的管理权限:它会影响所有数据库的用户,并且如果它发生更改,可能会导致其他软件混乱。您的错误消息清楚地表明您没有该权限。将 DBMS 的全球时区设置为 UTC 被认为是一个很好的做法。
设置会话时区(前两个示例)不需要特权,因为它只影响您的会话。许多应用程序每次连接到 DBMS 时都会设置时区,因为这允许将当前时区设置作为用户首选项进行处理。
你没有说你的前两个例子是否成功。如果
SET SESSION time_zone='Asia/Kolkata'
失败而 SET SESSION time_zone='+05:30'
成功,则意味着系统管理员尚未加载 DBMS 的时区表。请那个人阅读本文。请注意,许多托管提供商拒绝加载这些表,即使它们是 MySQL 和 MariaDb 标准配置的一部分。
(如果你的前两个例子都失败了,那就是其他地方出了问题。)
对于仅限印度的应用程序,没有可用的时区表不是问题,因为印度不使用夏令时。但对于许多地方来说,当地时间与 UTC 之间的偏移每年会发生两次变化。时区表实现了这些更改。例如,
America/Halifax
在夏天在 -03:00
和冬天在 -04:00
之间切换。