3

タイムスタンプフィールドは、のDATETIMEような形式の列です2012-03-19 00:23:14。2行のタイムスタンプを比較して、大きい方のタイムスタンプを見つけるにはどうすればよいですか?私が使用している以下のクエリは機能していません。

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)
4

3 に答える 3

7

If ステートメントを使用して、A タイムスタンプが B タイムスタンプより大きいかどうかを検証できます。

select if(UNIX_TIMESTAMP('2009-02-01 00:00:00') > UNIX_TIMESTAMP('2009-01-01 00:00:00'), true, false)
于 2012-04-30T13:47:58.087 に答える
1

神に感謝します。これでクエリは問題ありません。

欠落していたのは、テーブル名の後の SET 構文であり、GROUP BY 構文も EXISTS から除外する必要があります。

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)
于 2012-05-01T04:22:04.533 に答える
1

UNIX_TIMESTAMP()、関数を試して 、 UNIX_TIMESTAMP(date)2 つのタイムスタンプを比較してください。

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp

于 2012-04-30T13:31:54.457 に答える