在 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 数据。
我正在将 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 数据。