0

テーブルからデータを収集してから、2 つの日付の間のステートメントを実行しようとしています。ステートメントは Java 文字列で作成され、文字列をパラメータとして statement.executeQuery() を使用して resultSet 変数によって使用されます。これは、2 つの日付の文字列を作成する方法です。

Calendar today = Calendar.getInstance();
        int month = today.get(Calendar.MONTH);
        int year = today.get(Calendar.YEAR);
        int endOfMonth = today.getActualMaximum(Calendar.DATE);
        String sql;
        if (month < 10) {
            sql = "SELECT * FROM ORDERS WHERE DATE BETWEEN " + "#0" + month + "/01/" + year + "#" + " AND " + "#0" + month + "/" + endOfMonth + "/" + year + "#";

そして、この文字列の行を印刷すると、結果は次のようになります。

SELECT * FROM ORDERS WHERE DATE BETWEEN #03/01/2015# AND #03/30/2015# 

ただし、この文字列を executeQuery メソッドで実行すると、次のエラーが発生します。

java.sql.SQLSyntaxErrorException: Lexical error at line 1, column 41.  Encountered: "#" (35), after : "".
4

2 に答える 2

3

'SQL では、日付はハッシュタグではなく引用符で囲む必要があります#

それらを変更すると、このクエリが機能するはずです。

SELECT * FROM ORDERS WHERE DATE BETWEEN '03/01/2015' AND '03/30/2015'

それよりも

SELECT * FROM ORDERS WHERE DATE BETWEEN #03/01/2015# AND #03/30/2015# 
于 2015-04-03T12:56:11.087 に答える