Как запустить запрос postgres с датой в качестве входных данных в столбце с меткой времени в длинном формате

#postgresql #timestamp #sql-timestamp

#postgresql #временная метка #sql-временная метка

Вопрос:

Я хочу запросить таблицу базы данных postgres, в которой есть столбец с меткой времени в длинных миллисекундах. Но у меня есть время в формате даты «гггг-ММ-дд ЧЧ: мм: ssZ» вот так. Как я могу преобразовать этот формат даты в длинные миллисекунды для выполнения запроса?

Комментарии:

1. Значения временных меток должны храниться в timestamp столбцах, а не bigint

Ответ №1:

Вы можете либо преобразовать ваше длинное значение в правильную временную метку:

 select *
from the_table
where to_timestamp(the_millisecond_column / 1000) = timestamp '2020-10-05 07:42'
  

Или извлеките секунды из значения метки времени :

 select *
from the_table
where the_millisecond_column = extract(epoch from timestamp '2020-10-05 07:42') * 1000
  

Однако лучшим решением является преобразование этого столбца в правильный timestamp столбец, чтобы избежать постоянного преобразования между (миллисекундами) и правильными timestamp значениями