时间戳列上时间范围之间的 Postgresql 查询

Postgresql query between time ranges on a timestamp column

假设 table 具有 timestamp 列,例如

my_db=# \d l1
                                     Tabelle »public.l1«
    Spalte     |              Typ               | Sortierfolge | NULL erlaubt? | Vorgabewert 
---------------+--------------------------------+--------------+---------------+-------------
 timestamp     | timestamp(6) without time zone |              | not null      | 

查询匹配

的那些行的最有效方法是什么
<stub>
time(timestamp)>='10:00:00' and time(timestamp)<='10:30:00'
</stub>

我找不到 suitable BETWEEN 语句。

您的查询效率将取决于您的数据量和索引技术。话虽如此,您可以简单地将 timestamp 列转换为 time 并按照您的建议使用 between :

SELECT * FROM l1
WHERE CAST(timestamp AS TIME) BETWEEN '10:00:00' AND '13:00:00';

或者如果你不需要坚持 SQL Ansi(恕我直言,这是一个更酷的符号)..

SELECT * FROM l1
WHERE timestamp::TIME BETWEEN '10:00:00' AND '13:00:00';