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

SimpleDateFormatter.parse дава изход във формат, различен от зададения

Не предавайте датите като низове към вашата MySQL база данни. По-добре е, както по-лесно, така и по-безопасно да предавате обекти за дата. От една страна, това ви освобождава от форматиране и всякакви проблеми с форматирането. Най-добре предайте екземпляри на клас от java.time , модерният API за дата и час на Java. Във вашия случай LocalDateTime ще свърши работа.

    String ep ="a1527069600";
    long epoch = Long.parseLong(ep.substring(1));
    Instant inst = Instant.ofEpochSecond(epoch);
    LocalDateTime ldt = inst.atZone(ZoneId.of("Asia/Calcutta")).toLocalDateTime();

    System.out.println(ldt);

    PreparedStatement ps = myDatabaseConnection.prepareStatement(
            "insert into my_table (my_date_time) values (?)");
    ps.setObject(1, ldt);

LocalDateTime получено е:

Опростих малко вашето преобразуване от епохален низ. Използвайте примитивен long с малки букви вместо Long обект. Използвам вашата часова зона, Азия/Калкута, предполагайки, че стойностите на вашата база данни са в тази часова зона. Нормалните препоръки са да се поддържат стойностите на базата данни в UTC, поне ако има някаква възможност данните някога да бъдат използвани извън вашата часова зона. Ако искате това, използвайте това преобразуване вместо горното:

    LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();

Връзка: Урок за Oracle:Дата и час обяснява как да използвате java.time .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Задайте часова зона в PHP и MySQL

  2. Не може да се извлекат данни от базата данни към маркера на скрипта, докато се използва графика

  3. MySQL/SQL извлича ли първите 40 знака от текстово поле?

  4. Променете езика на съобщението за грешка в MySQL

  5. Основно създаване на таблица fpdf