MYSQL

2011-12-11 6 views
0

を使用して、3つの異なる時間(24時間)フレームにデータを分離する方法まずはSQLを使用してください。 SQLクエリ言語のみ。私は私のプロジェクトに必要ないくつかの機能を抽出するためにMYSQLのworkbenchを使用しています。私は、必要な機能を抽出し、それを新しいテーブルコールの新しいイベントに格納することができました。私はまた、時間を整数に変換しました。以下で使用するSQLコードである: -MYSQL

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; 

結果(出力の一部)I数値に時間を変換しているので

 
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 

は、したがって、私は24時間(時間フレーム0,1と2)の期間内に3つの異なる時間枠にクエリの出力形式を分離する必要があります。ここに問題があります...私がコードを使用してそれをしようとすると(以下)、私は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 

を得続けます。それはプログラミングになると私は完全なクルッツです。ごめんなさい 。 また、ネットをブラウズしてこの作業をしようとしています。あなたの返事を待っている間に苦労している。あなたは8時間の枠に侵入しようとしていない場合、私は上記の、以前
を誤解

答えて

1
if (newtime>160000, 2, if(newtime>80000, 1, 0)) 

は、あなたがまだNEWTIMEが必要な場合は、副選択の中にあなたのクエリを囲むことができ

+0

はあなたに感謝TIMEを使用することを検討してください(ただ、擬似コード、データベースに適切な構文を使用してください)。ついにそれを手に入れました。私は今眠ることができます。 – user1092074

+0

いいえ、これは間違った構文です。ちょうど 'new_eventからtime_frameとして'(newtime> 160000、2、if(newtime> 80000,1,0))を選択すると '; – ajreal

0

を助けるべきです。 MySQLで

select *, newtime/3 as segment 
FROM "your-query" 

はとてもとても、

SELECT TIME(event.timestamp)/3 as seqment