时间戳列上时间范围之间的 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';
假设 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';