【发布时间】:2012-03-31 19:00:35
【问题描述】:
我有一个使用 PostgreSQL 8.4 的服务器,它每晚 01:00 都会重新启动(不要问),并且需要获取已连接用户的列表(即他们的时间戳是 u.login > u.logout):
SELECT u.login, u.id, u.first_name
FROM pref_users u
WHERE u.login > u.logout and
u.login > now() - interval '24 hour'
ORDER BY u.login;
login | id | first_name
----------------------------+----------------+-------------
2012-03-14 09:27:33.41645 | OK171511218029 | Alice
2012-03-14 09:51:46.387244 | OK448670789462 | Bob
2012-03-14 09:52:36.738625 | OK5088512947 | Sergej
但是比较u.login > now()-interval '24 hour' 也会在最后 01:00 之前交付用户,这很糟糕,尤其是。早上。
有没有什么有效的方法可以获取自上次 01:00 以来的登录,而无需使用to_char() 进行字符串杂技?
【问题讨论】:
标签: postgresql date datetime timestamp postgresql-8.4