首页 > 解决方案 > Django 和 PostgreSQL - 如何存储时间范围?

问题描述

我想存储一个时间范围(没有日期),如“HH:MM-HH:MM”。你能给我一个提示,我怎样才能最容易地实现它?也许有一种方法可以使用 DateRangeField 来达到这个目的或其他目的。感谢您花时间!

标签: djangopostgresql

解决方案


没有日期的时间并没有多大意义,因为如果您需要一个跨越午夜(天)的范围,您总是可以使用 to_char(<yourtimestamp>,'hh24.mi:ss') 转换为文本或提取各个部分。不幸的是,Postgres 没有提供 extract(time from <yourtimestamp>) 函数。以下功能基本上提供了这一点。

create or replace 
function extract_tod(date_time_in timestamp without time zone) 
  returns time 
  language sql 
as $$
   select to_char(date_time_in, 'hh24:mi:ss')::time;
$$; 

有关时间戳范围,请参见此处,有关它们的相关功能,请参见此处。至于如何存储,只需将日期存储为标准 TIMESTAMP(日期+时间)。


推荐阅读