У меня есть скрипт приложений Google, подобный следующему:
// 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()
}
Он считывает содержимое ячейки в D3:D3 из электронной таблицы Google, а затем записывает его значение в AWS RDS.
Когда значение в таблице - 2018/03/09, я обнаружил, что 2018-03-08 08:00:00 был записан в базу данных. Почему между этими двумя значениями разница во времени?
Конвертер эпохи говорит, что 1.5205248E12 относится к 2018-03-09 UTC + 8.
Вот мой файл appsscript.json:
{
"timeZone": "Asia/Taipei",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER"
}
Часовой пояс Asia/Taipei - UTC+8.
Параметр time_zone моего AWS RDS также имеет значение Asia/Taipei.
Тип столбца start_date - datetime DEFAULT NULL.
Я не понимаю, почему разница во времени между значением ячейки электронной таблицы Google и значением start_date в моем AWS RDS.
А в каком часовом поясе сообщает AWS?
Я бы проверил часовой пояс вашей базы данных
@tehhowch, единственное, что я считаю связанным с часовым поясом, - это параметр time_zone, для которого установлено значение Asia/Taipei. Есть ли в AWS какой-либо другой параметр, связанный с часовым поясом?
SELECT @@global.time_zone, @@session.time_zone; выводит 2 Asia/Taipei.
Похоже, эта ошибка вызвана JDK-6596714.






@pnuts, оба - "Азия / Тайбэй".