115 votes

Comment convertir TimeStamp to Date en Java?

Comment convertir 'timeStamp' en date après avoir obtenu le nombre en java?

Mon code actuel est le suivant:

 public class GetCurrentDateTime {

    public int data() {
        int count = 0;
        java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis());
        java.sql.Date date = new java.sql.Date(timeStamp.getTime()); 
        System.out.println(date);
        //count++;

        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/pro", "root", "");

            PreparedStatement statement = con.prepareStatement("select * from orders where status='Q' AND date=CURDATE()");
            ResultSet result = statement.executeQuery();
            while (result.next()) {
                // Do something with the row returned.
                count++; //if the first col is a count.
            }
        } catch (Exception exc) {
            System.out.println(exc.getMessage());
        }

        return count;
    }
}
 

Ceci est ma base de données: entrez la description de l'image ici

Ici, le résultat obtenu était 2012-08-07 0, mais la requête équivalente en renvoie 3. Pourquoi ai-je 0?

207voto

Alex Coleman Points 3927

Créez simplement un nouvel objet Date avec la valeur getTime du tampon en tant que paramètre

Voici un exemple (j'utilise un exemple d'horodatage de l'heure actuelle):

   Timestamp stamp = new Timestamp(System.currentTimeMillis());
  Date date = new Date(stamp.getTime());
  System.out.println(date);
 

42voto

VincentLamoute Points 300
// timestamp to Date
long timestamp = 5607059900000; //Example -> in ms
Date d = new Date(timestamp );

// Date to timestamp
long timestamp = d.getTime();

//If you want the current timestamp :
Calendar c = Calendar.getInstance();
long timestamp = c.getTimeInMillis();

4voto

Sujay Points 5506

Tout d'abord, vous n'êtes pas en tirant parti de l'avantage de l'utilisation d'un PreparedStatement. Je voudrais tout d'abord vous suggérons de modifier votre PreparedStatement comme suit:

PreparedStatement statement = con.prepareStatement("select * from orders where status=? AND date=?")

Vous pouvez ensuite utiliser statement.setXX(param_index, param_value) pour définir les valeurs respectives. Pour la conversion en timestamp, ont un oeil à la suite de la documentation javadoc:

PreparedStatement.setTimeStamp()
Timestamp

Espérons que cette aide!

3voto

Aqua Points 14652

Pas sûr de ce que vous essayez de sélectionner dans la requête, mais gardez à l'esprit que UNIX_TIMESTAMP() sans argument retourne le temps maintenant. Vous devriez probablement vous fournir un temps valide tant qu'argument, ou changer la condition.

EDIT:

Voici un exemple d'un moment lié requête basée sur la question:

PreparedStatement statement = con
        .prepareStatement("select * from orders where status='Q' AND date > ?");
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2000");
statement.setDate(1, new java.sql.Date(date.getTime()));

EDIT: colonne de type timestamp

Dans le cas d'horodatage utiliser java.sql.Timestamp et PreparedStatement.setTimestamp(), c'est à dire:

PreparedStatement statement = con
        .prepareStatement("select * from orders where status='Q' AND date > ?");
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2000");
Timestamp timestamp = new Timestamp(date.getTime());
statement.setTimestamp(1, timestamp);

0voto

Deepak Points 21

Voici un exemple qui donne la date dans un format différent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X