Как правильно записать дату из электронной таблицы Google в базу данных AWS RDS с помощью скрипта приложений Google?

У меня есть скрипт приложений 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.

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

Brian 19.06.2018 11:42

А в каком часовом поясе сообщает AWS?

tehhowch 19.06.2018 13:48

Я бы проверил часовой пояс вашей базы данных

e__n 20.06.2018 20:50

@tehhowch, единственное, что я считаю связанным с часовым поясом, - это параметр time_zone, для которого установлено значение Asia/Taipei. Есть ли в AWS какой-либо другой параметр, связанный с часовым поясом?

Brian 21.06.2018 02:39
SELECT @@global.time_zone, @@session.time_zone; выводит 2 Asia/Taipei.
Brian 21.06.2018 02:41

Похоже, эта ошибка вызвана JDK-6596714.

Brian 21.06.2018 08:31
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
6
304
0

Другие вопросы по теме