Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql如何根据用户上次访问该地点的时间间隔进行检查?_Mysql_Database - Fatal编程技术网

mysql如何根据用户上次访问该地点的时间间隔进行检查?

mysql如何根据用户上次访问该地点的时间间隔进行检查?,mysql,database,Mysql,Database,我有一个客户表,可以显示客户是否是第一次访问这个地方,以及客户的个人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)

我有一个客户表,可以显示客户是否是第一次访问这个地方,以及客户的个人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分钟,则返回null,否则返回true或分钟数

例如:

如果他/她最后一次访问商店是在6小时前,我希望得到null或false,如果它超过我期望得到的值或true

ps:它必须与当前时间戳值进行比较


我可能只在必要时提供更多信息。

您的代码返回正确的结果,但过于复杂。
您可以这样做:

SELECT
  TIMESTAMPDIFF(
    MINUTE,
    (
      SELECT MAX(visit_date)
      FROM Client 
      WHERE user_id = '2'
    ),   
    CURRENT_TIMESTAMP()
  ) AS Difference;
请参阅。
或检查。

选择
当TIMESTAMPDIFF(小时,最大值(c1.访问\u日期),当前\u TIMESTAMP())小于360时,则“FALSE”或“TRUE”结束超过六小时
来自客户机c1
按c1.U用户id分组

你能把小提琴的内容粘贴在这里吗,因此,我们不必离开这个页面,为带有@草莓的sameAgree提供所需的结果,这就是您想要的结果unclear@Kevin我发现你的立场自相矛盾,令人困惑。我只想扣除客户最后一次来店的时间戳,看看他上次来店后是否超过6小时进来了。我需要提高我的英语!您的解决方案更简单!非常感谢。你的回答帮助我看到了我在创建查询时犯的许多错误,同时@Kevin answer为我提供了检查时间间隔所需的内容。我的回答回答了你在问题中发布的要求。您没有要求提供包含所有用户的解决方案。您的代码是关于一个特定用户的。对吗?我刚刚检查了你的第二个链接,我不知道该怎么办,两个答案都是正确的!它们都符合你发布的要求吗?谢谢,这就是我所需要的,我还在学习SQL,我没想到会有这么简单的解决方案,很高兴有一个!两个答案都符合要求我不知道该怎么办
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_id