2017-04-24 21 views
0

在將我的日期存儲在德比表中作爲「2017年4月5日」(字母數字),這裏的查詢代碼是否知道如何正確查詢?與所有數字格式「04 05 2017」相反。換句話說,查詢可以處理月份排序的charvar嗎?具有日期格式的德比數據庫alfa +數字

(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

不,如果您存儲在數據庫中的日期爲這樣的字符串的排序將只是一個字符串比較和順序將是不正確的(德比應該是怎樣知道這是約會嗎?) 。

如果您希望它保留日期+時間的日期或TIMESTAMP,則應將列類型定義爲DATE

+0

要在某種程度上擴展您的答案,最重要的是數據庫列的類型,而不是將數據存儲到數據庫的程序中的數據類型。使用Java的實用程序類,您可以將來自各種輸入格式的數據轉換爲各種數據庫列類型,日期和時間應該在字符串表達式轉換爲內部「DATE」或「TIMESTAMP」類型'聲明。 –

+0

謝謝你! :)我希望查詢結果採用更友好的格式,即:「2017年4月3日」關於「04 03 2017 ......所以我需要做一些查找表......」即:APR = 04; – Rick19007

+0

使用DATE或TIMESTAMP將日期存儲在數據庫中,並使用類似於DateTimeFormatter或SimpleDateFormat的格式在Java代碼中格式化日期,而不是**將日期作爲字符串存儲在數據庫中。 –