Я пытаюсь сохранить временные метки Unix с точностью до миллисекунды, сгенерированные из Javascript Date.now() в таблицу Date.now() Data в столбце с именем timestamp с типом int8 или DataTypes.BIGINT при использовании библиотеки Javascript Sequelize .

Вопрос 1: является ли int8 / BIGINT рекомендуемым типом для хранения миллисекундных временных меток Unix?

Вопрос 2: Когда я пытаюсь создать гипертаблицу TimescaleDB, используя:

 SELECT create_hypertable('"Data"', 'timestamp', chunk_time_interval ={amp}gt; interval '1 day'); 

Я получаю сообщение об ошибке

ОШИБКА: недопустимый интервал: должен быть целочисленным типом для целочисленных измерений, время: 0,006000 с

Это потому, что interval '1 day' нельзя использовать со столбцом типа integer, а только для типов отметок времени и даты?

(График времени здесь)

  1. Мы рекомендуем использовать собственный формат timestamptz (отметка времени с часовым поясом) или время, когда это возможно, а не целые числа. Это микросекундная точность, и ее гораздо проще использовать с преобразованием часового пояса, запросами с использованием временных меток, now () и т. Д. Единственный случай, когда это невозможно, — это точность с точностью до наносекунды (нужен bigint), но здесь это неприменимо.

  2. Вы уже столкнулись с проблемой использования целочисленной метки времени (а не типа метки времени). Вы устанавливаете chunk_time_interval для типа интервала, но ваш столбец является целым числом. Проблема в том, что мы не знаем, представляет ли ваше целое число наносекунды, секунды, часы и т. Д., Поэтому вы не можете использовать что-то понятное человеку, например, «1 день». В этом случае, если ваш столбец времени — миллисекунды, вам нужно будет указать 86400000.

Но в целом, рекомендовал бы использовать типы timestamptz, если это вообще возможно.