不幸的是,无法在 RDS DB ParameterGroups 中设置 default_timezone,因此您的尝试已经是正确的方向。
$ rds-describe-db-parameters default | grep "time_zone"
DBPARAMETER default_time_zone engine-default string static false
要通过 SET GLOBAL 设置全局值,您需要拥有作为 RDS 用户未授予您的 SUPER 权限。
设置 time_zone 的唯一方法是基于每个连接
mysql> SET time_zone = timezone;
在我的机器上,我成功地尝试了美国/东部,但我运行了相当老的一代。
要确定您可以使用的时区,请登录您的框中
mysql -h yourboxhost.rds.amazonaws.com -u <youruser> -p
并输入
mysql> SELECT * FROM mysql.time_zone_name;
您应该获得可以在实例上设置的已安装和有效时区名称列表
+----------------------------------------+--------------+
| Name | Time_zone_id |
+----------------------------------------+--------------+
| Africa/Abidjan | 1 |
| Africa/Accra | 2 |
| Africa/Addis_Ababa | 3 |
| Africa/Algiers | 4 |
| Africa/Asmara | 5 |
| Africa/Asmera | 6 |
| Africa/Bamako | 7 |
| Africa/Bangui | 8 |
| Africa/Banjul | 9 |
| Africa/Bissau | 10 |
| Africa/Blantyre | 11 |
| Africa/Brazzaville | 12 |
| Africa/Bujumbura | 13 |
| Africa/Cairo | 14 |
etc...
每次连接到数据库服务器时都必须设置 time_zone
例如,如果你使用 php Mysqli 扩展,你可以这样做
$mysqli = mysqli_init();
mysqli_options($mysqli,MYSQLI_INIT_COMMAND,"SET time_zone = 'Africa/Brazzaville'" );
mysqli_real_connect($mysqli,$host, $user, $pass,$dbName) or die ('Unable to connect');
否则只需手动(就让您的数据库连接器执行此操作而言)SET time_zone = '<YOUR_DESIRED_TIMEZONE>'
在您连接到数据库后立即执行查询