如何使用谷歌应用脚​​本将日期从谷歌电子表格正确写入AWS RDS数据库?

时间:2018-06-19 08:21:31

标签: mysql google-apps-script google-sheets amazon-rds

我有一个谷歌应用程序脚本,如下所示:

// 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的价值之间存在时差。

0 个答案:

没有答案