2017-04-24 17 views
0

私の日付を "Apr 5 2017"(アルファ+数字)としてダービー・テーブルに格納すると、ここでのクエリ・コードは正しく照会する方法を知りますか?すべての数値形式 "04 05 2017"とは対照的です。言い換えれば、クエリーは月のソートのためにcharvarを処理できますか?日付形式のアルファ+数字付きDerbyデータベース

(PreparedStatement st = con.prepareStatement("select * from TEST5 where startCol >= date1 and endCol <= date2"); 
ResultSet rs = st.executeQuery()) { 
     MainDisplay.jTable1.setModel(DbUtils.resultSetToTableModel(rs)); 

     rs.close(); 
     st.close(); 
     con.close(); 

答えて

2

ありませんあなたはこのような文字列としてデシベルで日付を格納する場合、ソートは単なる文字列が比較されますと注文が(どのようにDerbyは、この日付で知ることになっている?)正しくありません。

日付を保持する場合はDATE、日付+時間の場合はTIMESTAMPとして列の種類を定義する必要があります。

+0

答えをいくらか拡張するために、重要なのは、データをデータベースに格納するプログラム内のデータの種類ではなく、データベース列の型です。 Javaのユーティリティクラスを使用すると、さまざまな入力形式のデータをさまざまなデータベースの列型に変換できます。日付と時刻は、INSERT時に文字列表現から内部の 'DATE'または' TIMESTAMP'型に変換する必要があります'ステートメント。 –

+0

ありがとうございました! :)私はクエリの結果がよりフレンドリーな形式、すなわち「04 03 03 2017」のように「04 03 2017」になることを望んでいます。だから私はある種のルックアップテーブルを行う必要がありますか?つまり、:APR = 04; – Rick19007

+0

DATEまたはTIMESTAMPを使用して日付をデータベースに格納し、DateTimeFormatterやSimpleDateFormatなどのJavaコードで日付を書式設定します。 –