Mysql
 sql >> база данни >  >> RDS >> Mysql

Работа с MySQL дати и времеви марки в Java

От страна на Java датата обикновено се представя от (лошо проектирана, но настрана) java.util.Date . Основно е подкрепено от епохалното време във вид на дълъг , известен също като времева марка. Той съдържа информация за частите за дата и час. В Java точността е в милисекунди.

В SQL страна има няколко стандартни типа дата и час, DATE , ВРЕМЕ и TIMESTAMP (в някои DB се наричат ​​също DATETIME ), които са представени в JDBC като java.sql.Date , java.sql.Time и java.sql.Timestamp , всички подкласове на java.util.Date . Прецизността зависи от DB, често в милисекунди като Java, но може да бъде и за секунди.

За разлика от java.util.Date , java.sql.Date съдържа само информация за частта от датата (година, месец, ден). Времето съдържа само информация за частта от времето (часове, минути, секунди) и Timestamp съдържа информация за двете части, като java.util.Date прави.

Нормалната практика за съхраняване на времева марка в DB (по този начин, java.util.Date от страна на Java и java.sql.Timestamp от страна на JDBC) е да използвате 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);

Нормалната практика за получаване на времева марка от DB е да се използва ResultSet#getTimestamp() .

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql:Подреждане по харесване?

  2. '0000-00-00 00:00:00' не може да бъде представен като java.sql.Timestamp грешка

  3. Не мога да намеря my.cnf на моя компютър с Windows

  4. Заобикаляне на MySQL Грешка не може да се отвори отново

  5. Какъв е еквивалентът на SQL Server на ELT() в MySQL?