我有一个客户端表,如果这是客户第一次访问这个地方和客户个人id,重点是我需要知道用户返回时间是否超过6小时(360分钟)。
检查代码,看看我自己能到达多远:
-- schema
CREATE TABLE Client (
Id INT NOT NULL AUTO_INCREMENT,
user_name VARCHAR(50) NOT NULL,
user_id VARCHAR(30) NULL,
first_time_buying VARCHAR(3) NOT NULL,
visit_date DATETIME NOT NULL,
PRIMARY KEY(Id)
)
;
-- data
INSERT INTO Client
(user_name, user_id, first_time_buying, visit_date)
VALUES
('Fred', '1','yes' ,'2020-02-15 23:59:59'),
('Fernanda','2', 'yes', '2020-02-17 12:35:00'),
('Fred','1', 'no', '2020-02-21 15:59:09'),
('Fernanda','2', 'no','2020-03-01 11:06:39'),
('Fred','1', 'no', '2020-02-21 16:36:39)
;我创建的选择:
SELECT
TIMESTAMPDIFF(MINUTE,
(SELECT t1.visit_date
from Client t1 inner join(select user_name, max(Id) as maxID from Client
group by user_name) t2 on t1.user_name = t2.user_name
and t1.Id = t2.maxID
where t1.user_id = '2'),
CURRENT_TIMESTAMP()) AS Difference我还需要扣除当前的时间戳与用户最后一次进入的地方,如果它不到360分钟返回空,否则返回真或分钟的数量。
例如:
如果他(她)上一次去商店是在6小时前,我希望得到零或假,如果它更多,我期待得到的价值或真实。
ps:它必须与当前的时间戳值进行比较。
我可以提供更多的信息,只有在必要时。
发布于 2020-03-12 20:27:26
发布于 2020-03-12 20:31:32
SELECT
case when TIMESTAMPDIFF(HOUR, max(c1.visit_date), CURRENT_TIMESTAMP()) < 360 then 'FALSE' ELSE 'TRUE' END as MoreThanSixHours
from client c1
group by c1.user_idhttps://stackoverflow.com/questions/60660508
复制相似问题