首先,我使用SQL。只有SQL查询语言。我正在使用MYSQL工作台来提取项目所需的一些功能。我已设法提取所需的功能并将其存储在新表调用新事件中。我还把时间转换成整数。下面是使用的sql代码: -
select iphdr.cid ,iphdr.ip_dst, date(event.timestamp), convert(time(event.timestamp), unsigned) as newtime, event.signature
from iphdr, event
where iphdr.cid = event.cid
order by event.signature;
结果(部分输出)
cid |ip_add |date |newtime|sig. 480 | 3232284675 | 2011-11-19 |4328 | 1 482 | 3232284675 | 2011-11-19 |4328 | 1 1 | 3232284675 | 2011-11-19 |113928 | 1 2 | 3232284675 | 2011-11-19 |235959 | 2
因为我已将时间转换为数字;因此,newtime,现在我需要将上述查询的输出分成24小时(时间帧0,1和2)的三个不同时间范围。这是问题....当我尝试使用代码(下面)时,我不断收到1064错误代码。我认为通过使用IF然后Else,我可以轻松地将数据分成3个不同的时间范围。 我需要的输出如下
cid |ip_add |date |newtime|sig. |time Frame 480 | 3232284675 | 2011-11-19 | 4328 | 1 | 0 482 | 3232284675 | 2011-11-19 |4328 | 1 | 0 1 | 3232284675 | 2011-11-19 |113928 | 1 | 1 2 | 3232284675 | 2011-11-19 |235959 | 2 | 2
下面是我使用的代码,但我不断收到错误代码1064。
select newtime from new_event for every row
IF newtime < 80101
than newtime = 0
else if newtime > 80000 and newtime < 160101 than newtime = 1
else if newtime >160000 than newtime = 2
end if
我希望我更有意义。在编程方面,我是一个完整的klutz。对不起 。 我也试图通过浏览网络来完成这项工作。我在等待你的回复时努力工作。
答案 0 :(得分:1)
if (newtime>160000, 2, if(newtime>80000, 1, 0))
我以前误解了,如果你不打算进入8小时框架,
以上应该有帮助
答案 1 :(得分:0)
如果您仍需要新时间,则可以将查询包含在子选择中。 (只是伪代码,请使用适当的语法到您的数据库)
select *, newtime / 3 as segment
FROM "your-query"
在mysql中考虑使用TIME
SELECT TIME(event.timestamp) / 3 as seqment