Sequelize конвертировать дату из UTC в местный

0

У меня проблема с запросами в файле secelize.js.

В базе данных я храню модель с полем myDate которое хранится в UTC. У меня также есть запрос, в котором указан период времени:

AND p.myDate BETWEEN :dateStart AND :dateEnd

Используя sequelize.query, я sequelize.query параметры на:

  • dateStart: 2018-09-11T22:00:00.000Z
  • dateEnd: 2018-09-14T14:15:40.609Z

и теперь проблема в том, что я вижу, что запрос выполняет, но имеет значения localTime:

AND p.myDate BETWEEN '2018-09-12 00:00:00' AND '2018-09-14 16:15:40'

Почему он преобразовал его в местное время? Я не смог найти правильный ответ.

  • 0
    один из возможных способов (может быть, не самый лучший) сделать это, чтобы сохранить свое время в формате эпохи в базе данных, и всякий раз, когда вам нужно отобразить данные в приложении, просто используйте moment.format (). Таким образом, сравнение в предложении where не создает проблем.
  • 0
    @ getashu1, вероятно, да, это был бы путь, хотя я заметил странное поведение в библиотеке сиквелизов, и я хотел бы знать причину этого.
Показать ещё 2 комментария
Теги:
sequelize.js
mariadb

1 ответ

0

Вы можете указать часовой пояс, в котором вы хотите читать/писать в конфигурации Sequelize, как это.

development: {
    username: 'postgres',
    password: 'postgres',
    database: 'your_database_name',
    host: '127.0.0.1',
    port: 5432,
    dialect: 'postgres',
    dialectOptions: {
      useUTC: false, // for reading from database
    },
    timezone: '+05:30', // for writing to database
  },
  • 0
    Это не отвечает на мой вопрос: почему он конвертировал даты в местное время.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню