Как хранить в базе только время?

Я использую рельсы 3, я хочу сохранить start_time и end_time. Поскольку рельсы не поддерживают диапазоны дат.

какой тип данных я должен использовать для хранения времени без даты для последующего сравнения?

Это моя схема базы данных с типами данных tsrange в таблице Schedules (какой тип данных я должен использовать для его замены?).

CREATE TABLE Doctors
(
id INTEGER UNIQUE,
name VARCHAR(size)
);

CREATE TABLE Schedules
(
id INTEGER,
doctor_id INTEGER,
start_time tsrange,
end_time tsrange,
day VARCHAR(size)
);

CREATE TABLE Appointments
(
id INTEGER,
doctor_id INTEGER,
aday DATE
);

person evanx    schedule 17.01.2013    source источник
comment
Итак, вы просто хотите представить значение, например, 9:30 утра?   -  person Larsenal    schedule 18.01.2013
comment
да, и я хочу иметь возможность сравнить времена.   -  person evanx    schedule 18.01.2013
comment
Если вы используете формат time для типа столбца, MySQL (например) сохранит его как просто время, и это здорово, но Rails затем преобразует его в правильное время (с часовым поясом) и прикрепит к нему дату и Часовой пояс, который в большинстве случаев не идеален.   -  person Joshua Pinter    schedule 30.05.2019


Ответы (1)


Вероятно, вам нужен тип данных :time.

Кроме того, этот вопрос действительно помог мне, когда я пытался узнать о различиях между типами данных даты/времени в рельсах:

Что в Ruby on Rails разница между DateTime, Timestamp, Time и Date?

Вы также должны рассмотреть возможность использования типа данных datetime и просто преобразовать его с помощью strftime, например

 t = Time.now
 t.strftime("%I:%M%p")

Это займет дату/время и просто отформатирует как часы/минуты/AM|PM, опустив дату.

person ply    schedule 17.01.2013
comment
Но тип данных времени также добавляет дату или нет? - person evanx; 18.01.2013
comment
Он будет хранить значения часов/минут/секунд. Я также отредактировал свой вопрос выше. - person ply; 18.01.2013