我在PostgreSQL中有一个表:
CREATE TABLE tableA
(
time_A time with timezone
);
如何获得now()
和time_A
之间的分钟差异?
设计破坏了类型 timetz
,不鼓励使用它:
- 时区相等的后时间
要考虑时区,请改用timestamptz
。但请注意,实际时区不会显式存储:
- 数据类型为"带时区的时间戳"的时区存储
Postgres中时间戳/时区处理的详细信息:
- 在 Rails 和 PostgreSQL 中完全忽略时区
溶液
假设time
。
SELECT EXTRACT('epoch' FROM now()::time - time_a) / 60 AS minutes
FROM tablea;
now()
返回timestamptz
,该会自动针对当前时区进行调整。投射到time
时,您将获得当地时间。看:
- now(( 和 current_timestamp 之间的区别
减去两次得到一个interval
(当然,这可能是负数(。
应用 EXTRACT('epoch' FROM ...)
以获取该间隔中的秒数。除以 60。整数除法截断分数。