Время в 23:59:59 в PostgreSQL? - PullRequest
       5

Время в 23:59:59 в PostgreSQL?

1 голос
/ 03 августа 2011

В MySQL я могу создать таблицу с полем времени, и это значение может достигать 838: 59: 59 (839 часов - 1 секунда).Я только что прочитал, что в PostgreSQL поле часа не может превышать 23:00:00 (24 часа).Это можно обойти?Я пытаюсь создать простую базу данных, которая отслеживает, сколько часов и минут было потрачено на выполнение чего-либо, поэтому она должна превысить 23 часа и несколько минут.Я могу сделать это в MySQL, но мне нужно использовать PostgreSQL для этого.Я гуглил, но не нашел то, что искал, поэтому надеюсь, что просто не использовал правильные ключевые слова.

Ответы [ 4 ]

6 голосов
/ 03 августа 2011

Postgres не имеет «часового поля» - у него есть несколько типов даты / времени , которые служат различным потребностям. Тип, который, я считаю, лучше всего соответствует вашим потребностям, это INTERVAL.

3 голосов
/ 04 августа 2011

Хотя они используют одну и ту же запись, есть разница между временем суток и прошедшим временем. Некоторые из их значений перекрываются, но это разные домены. 838 не является допустимым значением в течение часа, если вы говорите о времени суток. 838 - это допустимое значение для часа, если вы говорите об истекшем времени.

Это различие приводит к двум различным типам данных: отметка времени и интервал .

create table intervals (
  ts timestamp primary key,
  ti interval not null
);

insert into intervals values (current_timestamp, '145:23:12');

select *
from intervals;

2011-08-03 21:51:16.837    145:23:12

select extract(hour from ti)
from intervals

145
0 голосов
/ 03 августа 2011

Вы можете использовать поле даты и времени ... 839 часов, что-то около 34,9 дней ...

0 голосов
/ 03 августа 2011

Я считаю, что вы правы, но это не должно быть проблемой, чтобы обойти.Предложил бы хранить целые числа времени UNIX для того времени, когда вы «вбиваете» и снова выходите, а затем добавляете дельту в поле int.

Это даст количество потраченных секунд, которое можно легко перевести в формат часы: минуты: секунды.

Дельта (разница) может быть рассчитана путем вычитания начальной отметки времени изметка времени окончания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...