另一个新手 PostgreSQL 问题。
我有这样的事情:
CREATE TABLE user (
userID bigserial primary key,
name varchar(50) NOT NULL,
created timestamp NULL DEFAULT CURRENT_TIMESTAMP
)
CREATE TABLE session (
sessionID bigserial primary key,
userID int NOT NULL,
lastAction timestamp NULL DEFAULT NULL,
created timestamp NULL DEFAULT CURRENT_TIMESTAMP
)
CREATE TABLE action (
actionID bigserial primary key,
sessionID int NOT NULL,
lastAction timestamp NULL DEFAULT NULL,
created timestamp NULL DEFAULT CURRENT_TIMESTAMP
)
一个用户可以有多个会话,每个会话都有多个会话操作。
每个用户都有过期的会话,在这种情况下会插入一个新的会话,并且他们采取的任何操作都会在此处进行编目。
我的问题是,我如何仅从他的会话中获取特定用户的操作,并且仅当它们发生在 1 天前、2 天前、一周前、一个月前或所有时间之前。
我查看了文档,我认为interval()
这是我正在寻找的,但我只知道如何使会话过期:
(part of a join here) e.lastAction >= now() - interval '4 hours'
那个要么返回我需要的东西,要么不返回。但是如何让它返回自 1 天前、2 天前等以来创建的所有记录。SQL 语法和逻辑仍然有点混乱。
所以在一个理想的世界里,我想问这样一个问题,这个用户在 2 天内采取了多少行动?我创建了关系和时间戳,但我编写了一个失败的查询。