我有一个谷歌应用程序脚本,如下所示:
// Initialize DB variables
var address = 'my-test-db.abcdefg.rds.amazonaws.com'
var user = 'my_name'
var password = 'my_password'
var db = 'my_db'
var dbUrl = 'jdbc:mysql://' + address + '/' + db + '?useUnicode=true&characterEncoding=UTF-8'
function testDateTime() {
// Read data inside the sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0]
var cell = sheet.getRange('D3:D3')
var testDateStr = cell.getValue()
Logger.log(testDateStr) // Fri Mar 09 00:00:00 GMT+08:00 2018
var testDate = new Date(testDateStr)
// Prepare SQL statement
var conn = Jdbc.getConnection(dbUrl, user, password)
var sql = 'UPDATE my_table SET start_date=? WHERE id=1'
var stmt = conn.prepareStatement(sql)
stmt.setTimestamp(1, Jdbc.newTimestamp(testDate.getTime()))
Logger.log(testDate.getTime()) // 1.5205248E12
// Execute SQL statement
stmt.execute() // The value inside my AWS RDS is 2018-03-08 08:00:00
// Clean up
stmt.close()
conn.close()
}
它从Google电子表格中读取D3:D3
中的单元格内容,然后将其值写入AWS RDS。
当工作表中的值为2018/03/09
时,我发现2018-03-08 08:00:00
已写入数据库。为什么这两个值之间存在时间差异?
Epoch Converter表示1.5205248E12
属于2018-03-09 UTC + 8。
这是我的appsscript.json
文件:
{
"timeZone": "Asia/Taipei",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER"
}
Asia/Taipei
的时区为UTC+8
。
我的AWS RDS的time_zone
参数也设置为Asia/Taipei
。
start_date
的列类型为datetime DEFAULT NULL
。
我不明白为什么谷歌电子表格单元格的价值与我的AWS RDS中start_date
的价值之间存在时差。