在 postgresql 中存储 24:00:00 以上时间的最佳方法?

Best way to store time above 24:00:00 in postgresql?

我正在将 GTFS 提要存储到 SQL 数据库中,有些时间预计会存储在 24:00:00 时间值上限之上。例如,一些火车 运行 在 12:30AM,但列出了前几天的服务,并且 运行ning 时间在 GTFS 规范中存储为 24:30。

解决这个问题的最佳方法是什么?我应该将其存储为字符串吗?

建议为此使用 int...您的值可能是:

Sec + Min * 60 + Hour * 3600

对于24:30:00,您将获得88200。

从数据库加载值时,您可以通过简单的数学方程反转值:

Hour = int(value / 3600)
Min  = int(value % 3600 / 60)
Sec  = value % 3600 % 1800

我将存储两个字段:

departure_time timestamp with time zone,
service_date date

出发时间计算如下:

 => select '2015-07-08'::timestamptz+'24:30'::interval;
 2015-07-09 00:30:00+02

这样:

  • 您有一个正常的时间字段用于排序事件;
  • 您不会丢失服务日期信息;
  • 如果需要,您可以计算回原始 GTFS 数据。