sql >> Databáze >  >> RDS >> Mysql

Manipulace s daty a časovými razítky MySQL v Javě

Na straně Java je datum obvykle reprezentováno (špatně navrženým, ale to stranou) java.util.Date . V zásadě je podporována dobou epochy v příchuti dlouhého , také známý jako časové razítko. Obsahuje informace o části data a času. V Javě je přesnost v milisekundách.

Na straně SQL existuje několik standardních typů data a času, DATE , TIME a TIMESTAMP (v některých DB se také nazývá DATETIME ), které jsou v JDBC reprezentovány jako java.sql.Date , java.sql.Time a java.sql.Timestamp , všechny podtřídy z java.util.Date . Přesnost závisí na DB, často v milisekundách jako Java, ale může být také v sekundách.

Na rozdíl od java.util.Date , java.sql.Date obsahuje pouze informace o části data (rok, měsíc, den). Čas obsahuje pouze informace o časové části (hodiny, minuty, sekundy) a Časové razítko obsahuje informace o obou částech, například java.util.Date ano.

Běžná praxe ukládat časové razítko do DB (tedy java.util.Date na straně Java a java.sql.Timestamp na straně JDBC) je použít 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);

Běžnou praxí pro získání časového razítka z DB je použít ResultSet#getTimestamp() .

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


  1. Jak funguje funkce UCASE() v MySQL

  2. Jak získat numerickou část z řetězce pomocí T-SQL?

  3. Operátory SET v SQL

  4. Online upgrade schématu v MySQL Galera Cluster pomocí metody RSU