2012-04-30 2 views
3

Поле метки времени - столбец DATETIME в формате, таком как 2012-03-19 00:23:14. Как я могу сравнить два ряда временных меток и найти более крупный? Следующий запрос, который я использую, не работает.Как сравнить две метки времени в MySql?

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) 
+1

Какой тип столбцов вашей временной метки? Я спрашиваю, потому что если они TIMESTAMP или DATETIME, оператор '>' должен работать нормально. –

+0

Это DATETIME. – Aymen

ответ

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) 
+0

Бог, который создает и вдохновляет нас. – Aymen

6

Вы можете попробовать использовать, если заявление, чтобы проверить, если временная метка больше, чем B метки времени.

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

Я изменил свой запрос, но все еще имею ту же проблему, статус не изменен Отчет UPDATE 1 status = 'время больше' WHERE EXISTS (SELECT ip_src, layer4_sport, timestamp FROM (SELECT ip_src, layer4_sport, timestamp from отчет 1) КАК TMPB Где отчет 1.layer4_sport = tmpb.layer4_sport и сообщать 1.ip_src = tmpb.ip_src И UNIX_TIMESTAMP ('отчет 1.timestamp')> UNIX_TIMESTAMP ('tmpb.timestamp') GROUP BY ip_src, layer4_sport HAVING COUNT (*) = 2) – Aymen

+0

проверьте таблицу на этом изображении, если хотите. http://filaty.com/i/1204/11946/Untitled.jpg – Aymen

+1

Я думаю, что проблема в инструкции EXISTS, попробуйте использовать инструкцию IN. В подзапросе теперь вам нужно только вернуть идентификатор строки, которая будет обновляться –

Смежные вопросы