Sequelize с SQL Server (утомительно) хранит TZ в местном часовом поясе, но возвращает в UTC при запросе - PullRequest
0 голосов
/ 08 декабря 2018

Sequelize настроен правильно для хранения дат по местному времени («Америка / Чикаго» / -6: 00) в моей базе данных MS SQL Server, но когда я их получаю, они отображаются в UTC.

В моих настройках соединения Sequelize у меня есть timezone: 'America/Chicago' и useUTC: false в dialectOptions.Насколько я понимаю, эти две настройки должны гарантировать, что мои даты хранятся и извлекаются в моем местном часовом поясе.

Я также установил переменную окружения TZ на «Америка / Чикаго» перед запуском моего узла / экспресс-приложения.

Параметры подключения My Sequelize:

const sequelize = new Sequelize('db', 'user', 'pass', {
  host: 'host',
  dialect: 'mssql',
  timezone: 'America/Chicago',
  dialectOptions: {
    encrypt: false,
    useUTC: false
  },
  operatorsAliases: false,
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  },
});

Даты, правильно сохраненные в базе данных:

myDate: '2018-11-07 00:00:00 -06:00'
createdAt: '2018-12-08 13:46:17.617 -06:00'
updatedAt: '2018-12-08 13:46:17.617 -06:00'

Возвращено Sequelize через Postman с использованием конечной точки API:

{
    "mydate": "2018-11-07T06:00:00.000Z",
    "createdAt": "2018-12-08T19:46:17.617Z",
    "updatedAt": "2018-12-08T19:46:17.617Z"
}

В моем app.js я выводлю process.env.TZ:

console.log(`Starting app. TZ set to ${process.env.TZ}`);
// Starting app. TZ set to "America/Chicago"

Виноват Tedious или Sequelize в возврате дат в UTC или я что-то не так делаю?

Кроме того, почему myDate возвращается с '.000Z' в качестве часового пояса, но создается и обновляется. Возвращается с '.617Z' в качестве часового пояса?Оба возвращают UTC, так как проверка дат действительно на 6 часов опережает мое местное время.Я понимаю «.000Z», но ничего не могу найти о «.617Z».

Любые подсказки будут с благодарностью!

...