sql >> Database teknologi >  >> RDS >> Mysql

Håndtering af MySQL dato- og tidsstempler i Java

På Java-siden er datoen normalt repræsenteret af (dårligt designet, men det til side) java.util.Date . Det er dybest set understøttet af Epoketiden i smagen af ​​en lang , også kendt som et tidsstempel. Den indeholder oplysninger om både dato- og tidsdelene. I Java er præcisionen i millisekunder.

I SQL-siden er der flere standard dato- og tidstyper, DATE , TID og TIMESTAMP (i nogle DB'er også kaldet DATETIME ), som er repræsenteret i JDBC som java.sql.Date , java.sql.Time og java.sql.Timestamp , alle underklasser af java.util.Date . Præcisionen er DB-afhængig, ofte i millisekunder som Java, men den kan også være i sekunder.

I modsætning til java.util.Date , java.sql.Date indeholder kun oplysninger om datodelen (år, måned, dag). Tid indeholder kun information om tidsdelen (timer, minutter, sekunder) og Timestamp indeholder information om begge dele, f.eks. som java.util.Date gør.

Den normale praksis at gemme et tidsstempel i databasen (altså java.util.Date i Java side og java.sql.Timestamp i JDBC-siden) er at bruge PreparedStatement#setTimestamp() .

java.util.Date date = getItSomehow();
Timestamp timestamp = new Timestamp(date.getTime());
preparedStatement = connection.prepareStatement("SELECT * FROM tbl WHERE ts > ?");
preparedStatement.setTimestamp(1, timestamp);

Den normale praksis for at få et tidsstempel fra DB er at bruge ResultSet#getTimestamp() .

Timestamp timestamp = resultSet.getTimestamp("ts");
java.util.Date date = timestamp; // You can just upcast.


  1. Sådan forbindes C++-programmer til MariaDB

  2. Oracle SQL - Sum og grupper data efter uge

  3. Sådan installeres MySQL på macOS

  4. Implementering af MySQL Galera Cluster 4.0 på Amazon AWS EC2