如何只在数据库中存储时间?

eva*_*anx 2 ruby ruby-on-rails-3 postgresql-9.1

我正在使用rails 3,我想存储start_time和end_time.由于rails不支持日期范围.

我应该使用哪种数据类型来存储没有日期的时间以便以后进行比较?

这是我的数据库模式,其中包含表Schedules中的tsrange数据类型(我应该使用哪种数据类型来替换它?).

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
);
Run Code Online (Sandbox Code Playgroud)

ply*_*ply 7

:time数据类型可能就是你要找的东西.

此外,当我试图了解rails中日期/时间数据类型之间的差异时,这个问题确实对我有所帮助:

在Ruby on Rails中,DateTime,Timestamp,Time和Date之间的区别是什么?

您还应该考虑使用datetime数据类型,并使用strftime简单地转换它,例如

 t = Time.now
 t.strftime("%I:%M%p")
Run Code Online (Sandbox Code Playgroud)

这将采用日期/时间,并简单地格式化为小时/分钟/上午|下午,省略日期.