2017-04-24 1 views
0

En stockant ma date dans un derby table comme "5 avr 2017" (alpha + numérique), le code de requête ici va savoir comment interroger correctement? Par opposition à un format entièrement numérique "04 05 2017". En d'autres termes, la requête peut gérer charvar pour le tri par mois?Base de données Derby avec format de date alfa + numérique

(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(); 

Répondre

2

Non, si vous stockez la date dans le db comme une chaîne comme celui-ci le tri sera juste une comparaison de type chaîne et l'ordre ne sera pas correct (comment est-Derby censé savoir c'est une date?) .

Vous devez définir le type de colonne comme étant DATE si vous souhaitez qu'il contienne une date ou TIMESTAMP pour une date + heure.

+0

Pour développer un peu votre réponse, ce qui est important est le type de colonne de la base de données, pas le type de données dans le programme qui stocke les données dans la base de données. En utilisant les classes d'utilitaires de Java, vous pouvez convertir les données de divers formats d'entrée en une variété de types de colonnes de base de données, et les dates et les heures doivent être converties en types internes DATE ou TIMESTAMP à l'instant de l'insertion. 'déclaration. –

+0

Merci! :) Je souhaite que les résultats de la requête soient dans le format le plus convivial ie: "Apr 03 2017" comme "04 03 2017 ...... donc je devrais faire une sorte de table de consultation? .... ie: APR = 04; – Rick19007

+0

Vous stockez la date dans la base de données en utilisant DATE ou TIMESTAMP et vous formatez la date dans le code Java en utilisant quelque chose comme DateTimeFormatter ou SimpleDateFormat Vous ** ne ** stockez pas les dates sous forme de chaîne dans la base de données. –