Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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
应用程序脚本JDBC在保存到外部MySQL数据库时将时间戳转换为PDT时间_Mysql_Google Apps Script_Jdbc - Fatal编程技术网

应用程序脚本JDBC在保存到外部MySQL数据库时将时间戳转换为PDT时间

应用程序脚本JDBC在保存到外部MySQL数据库时将时间戳转换为PDT时间,mysql,google-apps-script,jdbc,Mysql,Google Apps Script,Jdbc,我正在编写一个脚本是应用程序脚本环境,它使用JDBC连接器将数据存储到外部MySQL数据库。除了JDBC将时隙切换到PDT(太平洋夏令时)时区外,一切都正常 var SCRIPT_START_TIME = new Date(); var jdbcDate = Jdbc.newTimestamp(SCRIPT_START_TIME.getTime()); console.log('start script: '+jdbcDate.getTime()); //start script: 161736

我正在编写一个脚本是应用程序脚本环境,它使用JDBC连接器将数据存储到外部MySQL数据库。除了JDBC将时隙切换到PDT(太平洋夏令时)时区外,一切都正常

var SCRIPT_START_TIME = new Date();
var jdbcDate = Jdbc.newTimestamp(SCRIPT_START_TIME.getTime());
console.log('start script: '+jdbcDate.getTime()); //start script: 1617369069432 - OK
...
var dbConnection = Jdbc.getConnection('jdbc:mysql://myserver.com:3306/mydatabase?characterEncoding=UTF-8', {'user': dbUser, 'password': dbPass, 'useJDBCCompliantTimeZoneShift': true} );
dbConnection.setAutoCommit(false);
...
var statement = dbConnection.prepareStatement('INSERT INTO `table` (product_id, last_search) VALUES (?,?) ON DUPLICATE KEY UPDATE last_search=?');
...
console.log('JDBC TimeStamp: '+ jdbcDate.getTime()); //JDBC TimeStamp: 1617369069432 - OK
statement.setTimestamp(2, jdbcDate);
statement.addBatch();
...
statement.executeBatch();
在脚本运行时,所有时间戳都是正确的,表示实际时间,但最后在MySQL中存储了不同的时间戳。如果我用
UNIX\u timestamp('last\u search')
查询SQL中存储的时间戳,我会得到:
1617336669
。这是9小时前的时间戳。目前,PDT和我所在时区的时差是9小时。因此,不是简单地更改“呈现”的时间字符串,而是更改时间戳本身。在JDBC连接期间,运行时间向后移动9小时

我的脚本时区设置正确:
“时区”:“欧洲/布达佩斯”,

我在这里或多或少地找到了一个选项,但建议
usejdbcompliantTimeZoneShift
选项没有改变任何东西


您知道JDBC连接期间发生这种时间偏移的原因吗?

尝试在连接上显式设置时区,例如使用“connectionTimeZone”,另请参见添加到@markrotVeel的点,尝试使用我没有提到的@markrotVeel的这种形式,因为在应用程序脚本中不支持此参数。如果我设置I get
错误:异常:不支持以下连接属性:connectionTimeZone。
错误:(支持的只有少数。@DDONDEPOT,您的建议在我看来很有希望,但尽管在.setTimestamp()中设置了时区,PDT时间戳仍然保存到数据库中。:/我对Google Apps脚本没有任何线索,但是否可以创建并使用
java.time.LocalDateTime