1

私はJavaを介してmysqlにクエリを実行しており、出力を取得しています。

真ん中に、私は持っています

WHERE 
    ipaddress = 'moteid6'
AND datetime BETWEEN '2012-09-25 15:45:00' AND '2012-09-25 18:45:00'

しかし、2012-09-25 15:45:00の代わりにdatetime1を、2012-09-25 18:45:00の代わりにdatetime2を、ユーザー入力のようにmoteid6の代わりにmoteidを指定すると、

System.out.println("Enter datetime1 in the format YY-MM-DD HH:MM:SS");
Scanner keyboard1 = new Scanner(System.in);
datetime1 = keyboard1.nextLine();
System.out.println("Enter datetime2 in the format YY-MM-DD HH:MM:SS");
Scanner keyboard2 = new Scanner(System.in);
datetime2 = keyboard2.nextLine();
System.out.println("Enter moteid");
Scanner keyboard3 = new Scanner(System.in);
datetime2 = keyboard3.nextLine();

次に、2012-09-25 15:45:00の代わりにdatetime1を置き換えて、mysqlにクエリを実行します。同様に、moteid6の代わりにdatetime2とmoteidを使用します。入力を取得しますが、mysqlをクエリしません。取得した結果は次のとおりです。

run:
Error: null
Enter datetime1 in the format YY-MM-DD HH:MM:SS
2012-09-25 15:45:00
Enter datetime2 in the format YY-MM-DD HH:MM:SS
2012-09-25 18:45:00
Enter moteid
moteid6
BUILD SUCCESSFUL (total time: 30 seconds)
The query i'm giving is 
String sql = ("SELECT (b.l2framessent - a.l2framessent) AS netl2framessent,CONVERT(endOfInterval*500, DATETIME) endOfInterval FROM (SELECT datetime DIV 500 startOfInterval,l2framessent FROM Statistics3,(SELECT MIN(datetime) mindate FROM Statistics3 WHERE ipaddress='moteid' AND datetime BETWEEN 'datetime1' AND 'datetime2' GROUP BY datetime DIV 500) b WHERE ipaddress='moteid' AND datetime = mindate) a, (SELECT datetime DIV 500 endOfInterval, l2framessent FROM Statistics3, (SELECT MIN(datetime) mindate FROM Statistics3 WHERE ipaddress = 'moteid' AND datetime BETWEEN 'datetime1' AND 'datetime2' GROUP BY datetime DIV 500) b WHERE ipaddress = 'moteid'AND datetime = mindate) b WHERE endOfInterval = startOfInterval+ 1 ");
4

1 に答える 1

0

質問が正しければ、次のようにselectクエリで変数名を渡します。

     WHERE 
    ipaddress = 'moteid6 '
AND datetime BETWEEN 'datetime1' AND 'datetime2'

日付と文字列を引用符で囲む必要があります。

私はクエリ全体を通り抜けますが、これは間違っているようです

   "(SELECT (b.l2framessent - a.l2framessent) AS netl2framessent,CONVERT(endOfInterval*500, DATETIME) 
endOfInterval FROM (SELECT datetime DIV 500 startOfInterval,l2framessent FROM Statistics3,
(SELECT MIN(datetime) mindate FROM Statistics3 WHERE ipaddress='moteid' AND datetime BETWEEN '"+datetime1+"' AND '"+datetime2+"' 
GROUP BY datetime DIV 500) b WHERE ipaddress='"+moteid+"' AND datetime = mindate) a, 
(SELECT datetime DIV 500 endOfInterval, l2framessent FROM Statistics3, (SELECT MIN(datetime) mindate FROM Statistics3 WHERE 
ipaddress = '"+moteid+"' AND datetime BETWEEN '"+datetime1+"' AND '"+datetime2+"' GROUP BY datetime DIV 500) b WHERE 
ipaddress = '"+moteid+"'AND datetime = mindate) b WHERE endOfInterval = startOfInterval+ 1 ");
于 2012-10-02T08:36:47.630 に答える