в формате ДатаВремя, то фактически в таблице хранится строка "2021-07-07 05:07:06.670975"
Если же хранить просто количество милисекунд, то получим bigint типа 1351441456747
Мне кажется, что милисекунды хранить оптимальнее по объёму и для скорости выборки для базы, чем строки.
А как на самом деле? Есть разница или под капотом оно всё оптимизировано и особой разницы по объёму данных и скорости выборки на миллионе записей мы не получим?
Лучше дата время, чем таймштамп. По факту дата время это и есть таймштамп, просто его видно как строку, это такое его представление. Под капотом там работают механизмы как с объектом даты. Ты даже можешь запросить это время в другом часовом поясе
На самом деле храните в timestamptz, не занимайтесь ерундой.
Только там для таймзоны есть отдельный тип. Если он нужен надо его заводить. По умолчанию он пишет в таймзоне которая задана настройками, в докер контейнере это UTC при голой установке в системе не знаю, давным давно не ставил
С Докером я разберусь и настрою как нужно. Мне главное понять - что настраивать. ) Почитал только что за timestamp и timestamptz. Пожалуй буду юзать timestamptz. К тому-же часовые зоны в моём случае будут не лишними.
> Пожалуй буду юзать timestamptz. И правильно. > К тому-же часовые зоны в моём случае будут не лишними. В timestamptz, кстати, не хранится никаких "часовых зон". Вообще, см. https://wiki.postgresql.org/wiki/Don%27t_Do_This#Date.2FTime_storage
В postgres нет формата ДатаВремя. Дажэ в делаемом русскими людьми PostgresProfessional.
Сори за неточность. Я имел в виду таймстемп.
И да, последние несколько раз я хранил даты в bigint -- но отнюдь не потому, что там он меньшэ займёт. В документацыи вполне написано, что занимает оно те жэ 8 байт, и тем, кому это неочевидно -- лучшэ не заниматься оптимизацыями на пустом месте.
А для чего тогда, если не секрет? Я просто сравнивал на выборках по времени, временные типы работали лучше, чем числовые. Но я признаюсь проверял на малом числе данных, возможно на больших числах другие показатели, но отсюда и вопрос, если не секрет конечно
В приложэнии от датчиков приходит unix_timestamp (число такое), от ядра приходит unix_timestamp, вычисления все ведутся в unix_timestamp, дажэ в итоге пользовательский интэрфейс сначала преобразует тычки календарика в unix_timestamp -- нафига мне при обращении к движку это опять в строку даты преобразовывать, а потом обратно?
Я знаю что такое unix timestamp. Если везде они тогда понятно. Просто думал, может есть какой-то кейс повышенного ыстродействия.
Это не слишком вероятно.
Обсуждают сегодня