0

私が学校用に (Java で) 書いているプログラムでは、時刻表を作成するために日付と日付の間で select ステートメントを実行する必要があります。これにより、SQL からデータが選択され、テーブルに配置されます。私の問題は、データ型の日付が「YYYY-MM-DD」の形式であり、使用しているJCalendarライブラリが日付をMM/DD/YYYYとして提供するため、これが壊れることです。SQL形式を変更する方法はありますか? またはこれを修正する簡単な方法はありますか?

これは私の選択クエリです:

'"SELECT * FROM `events` 
 WHERE `Date Of Event` >= '"+firstDate+"' AND `Date Of Event` <= '"+secondDate+"'"' 

最初と最後の日付の形式が異なります。

どんな助けでも大歓迎です。

4

2 に答える 2

2

SimpleDateFormatクラスを使用して日付をDateオブジェクトに解析し、別の SimpleDateFormat オブジェクトを使用して必要な形式に解析することができます。

これを行う方法の例を次に示します。

String sqlDate = "1992-02-16";
SimpleDateFormat sdfInput = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdfInput.parse(sqlDate);
SimpleDateFormat sdfResult = new SimpleDateFormat("MM-dd-yyyy");
String result = sdfResult.format(date);

データベースがそれを形式で保存する理由は、日付を表示する標準的なアメリカの方法であるため、形式を使用してyyyy-MM-ddいる間、並べ替えを可能にするためです。JCalendarMM-dd-yyyy

また、連結するのではなく、PreparedStatementを使用してパラメーターを追加することを強くお勧めします。

于 2014-03-16T15:15:08.840 に答える
0

明確にするために、これは基本的にSQLで必要なものです。

SELECT *
FROM `events` 
WHERE `Date Of Event` >= str_to_date('"+firstDate+"', '%m/%d/%Y') AND
      `Date Of Event` <= str_to_date('"+secondDate+"', %m/%d/%Y)"'

この変換は、アプリケーション レベルでも実行できます。「YYYY-MM-DD」形式で日付定数を渡すようにしてください。データベースでこれを行うと、比較が実際に日付で機能することが保証されます。

于 2014-03-16T15:21:15.093 に答える