sql >> Databasteknik >  >> RDS >> Mysql

Hantera MySQL datum och tidsstämplar i Java

På Java-sidan representeras datumet vanligtvis av (dåligt utformat, men det åt sidan) java.util.Date . Det stöds i princip av epoktiden i smaken av en lång , även känd som en tidsstämpel. Den innehåller information om både datum- och tidsdelarna. I Java är precisionen i millisekunder.

I SQL-sidan finns det flera standardtyper för datum och tid, DATE , TIME och TIMESTAMP (vid vissa DB:s även kallad DATETIME ), som representeras i JDBC som java.sql.Date , java.sql.Time och java.sql.Timestamp , alla underklasser av java.util.Date . Precisionen är DB-beroende, ofta i millisekunder som Java, men den kan också vara i sekunder.

I motsats till java.util.Date , java.sql.Date innehåller endast information om datumdelen (år, månad, dag). Tid innehåller endast information om tidsdelen (timmar, minuter, sekunder) och Timestamp innehåller information om båda delarna, som java.util.Date gör.

Vanlig praxis att lagra en tidsstämpel i databasen (därmed java.util.Date i Java-sidan och java.sql.Timestamp på JDBC-sidan) är att använda 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);

Vanlig praxis för att få en tidsstämpel från DB är att använda ResultSet#getTimestamp() .

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


  1. Migrera en Oracle-databas till MySQL på AWS, del 2

  2. HUR MAN:Kör schemalagda uppgifter med Microsoft Access

  3. 4 sätt att ersätta NULL med ett annat värde i MySQL

  4. T-SQL delad sträng