Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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_Timestamp_Sql Update - Fatal编程技术网

如何比较MySql中的两个时间戳?

如何比较MySql中的两个时间戳?,mysql,timestamp,sql-update,Mysql,Timestamp,Sql Update,时间戳字段是一个日期时间列,格式类似于2012-03-19 00:23:14。如何比较两行时间戳并找到较大的一行?下面我正在使用的查询无效 UPDATE report 1 status = 'time is larger' WHERE EXISTS (SELECT ip_src, layer4_sport, timestamp FROM (SELECT ip_src, layer4_sport, timestamp from report 1) AS tmpb W

时间戳字段是一个日期时间列,格式类似于2012-03-19 00:23:14。如何比较两行时间戳并找到较大的一行?下面我正在使用的查询无效

UPDATE report 1 status = 'time is larger' WHERE EXISTS 
  (SELECT ip_src, layer4_sport, timestamp FROM  
      (SELECT ip_src, layer4_sport, timestamp from report 1) AS tmpb  
   WHERE  report 1.layer4_sport = tmpb.layer4_sport 
   AND report 1.ip_src = tmpb.ip_src  
   AND  report 1.timestamp > tmpb.timestamp 
   GROUP BY ip_src, layer4_sport,  timestamp HAVING COUNT(*) = 2)
尝试使用UNIX\u TIMESTAMP、UNIX\u TIMESTAMPdate函数比较两个时间戳


您可以尝试使用if语句验证A时间戳是否大于B时间戳

select if(UNIX_TIMESTAMP('2009-02-01 00:00:00') > UNIX_TIMESTAMP('2009-01-01 00:00:00'), true, false)

谢天谢地,现在问题解决了

缺少的是在表名之后设置的语法,并且还应在EXISTS中省略GROUP BY语法

UPDATE report 1 SET status = 'time is larger' WHERE EXISTS 
  (SELECT ip_src, layer4_sport, timestamp FROM  
  (SELECT ip_src, layer4_sport, timestamp from report 1) AS tmpb  
   WHERE  report 1.layer4_sport = tmpb.layer4_sport 
   AND report 1.ip_src = tmpb.ip_src  
   AND  report 1.timestamp > tmpb.timestamp)

您的“时间戳”列是什么类型的?我这样问是因为如果它们是TIMESTAMP或DATETIME,>操作符应该可以正常工作。我已经更改了我的查询,但仍然存在相同的问题,状态未更改更新报告1状态='time is biger'如果存在,请选择ip_src,layer4_sport,TIMESTAMP FROM SELECT ip_src,layer4_sport,来自报告1的时间戳为tmpb,其中报告1.layer4_sport=tmpb.layer4_sport和报告1.ip_src=tmpb.ip_src和UNIX_timestamp'report 1.timestamp'>UNIX_timestamp'tmpb.timestamp'按ip_src分组,layer4_sport具有COUNT*=2检查此图像中的表格,如果需要。我认为问题在于EXISTS语句,尝试使用IN语句。现在在子查询中,您只需要返回将被更新的行的标识符。我如何在语句中使用?!!子查询中的条件应该实现,正如我认为的那样,只能通过EXISTS语句实现。无论如何,如果您能帮助我更改查询并使其在不存在的情况下运行,请为我写下它。感谢特别是当我删除所有与时间戳相关的想法时,更新工作会很好!创造和激励我们的上帝。