Postgres 查询比较两个日期是否等于边距
Postgres query compare if two dates are equal with margin
我在 Postgres 中有以下查询:
SELECT * FROM users WHERE registration = last_login;
注册和last_login都是时间戳。我遇到的问题是,这两个值的写法有些细微差别,但并不准确。有什么方法可以比较这两个日期,比如 1 秒?
假设last_login
总是在registration
之后,你可以检查两个时间戳的区别
select *
from users
where last_login - registration <= interval '1' second
a_horse_with_no_name 实际上已经回答了你的问题,但如果不能保证一个日期是一个又一个日期,你可以尝试这样的事情:
SELECT *
FROM users
WHERE @extract(epoch from registration - last_login) <= 1;
extract(epoch from some_interval) returns 以秒为单位的数字时间戳差值,以及@some_value returns 数字的绝对值,就像 abs( some_value)
我在 Postgres 中有以下查询:
SELECT * FROM users WHERE registration = last_login;
注册和last_login都是时间戳。我遇到的问题是,这两个值的写法有些细微差别,但并不准确。有什么方法可以比较这两个日期,比如 1 秒?
假设last_login
总是在registration
之后,你可以检查两个时间戳的区别
select *
from users
where last_login - registration <= interval '1' second
a_horse_with_no_name 实际上已经回答了你的问题,但如果不能保证一个日期是一个又一个日期,你可以尝试这样的事情:
SELECT *
FROM users
WHERE @extract(epoch from registration - last_login) <= 1;
extract(epoch from some_interval) returns 以秒为单位的数字时间戳差值,以及@some_value returns 数字的绝对值,就像 abs( some_value)