Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SimpleDateFormatter.parse dający wynik w innym formacie niż określony

Nie przekazuj dat jako ciągów do bazy danych MySQL. Lepiej, zarówno łatwiej, jak i bezpieczniej przekazywać przedmioty randkowe. Po pierwsze, zwalnia Cię z formatowania i wszelkich problemów z formatowaniem. Najlepiej, przekaż instancje klasy z java.time , nowoczesny interfejs API daty i czasu Java. W Twoim przypadku LocalDateTime zrobi.

    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 uzyskano:

Uprościłem nieco konwersję z ciągu epoki. Użyj prymitywnego long zamiast Long obiekt. Używam Twojej strefy czasowej, Azji/Kalkuty, zakładając, że wartości Twojej bazy danych są w tej strefie czasowej. Normalne zalecenia to utrzymywanie wartości bazy danych w UTC, przynajmniej jeśli istnieje jakakolwiek możliwość, że dane będą kiedykolwiek używane poza Twoją strefą czasową. Jeśli chcesz, użyj tej konwersji zamiast powyższej:

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

Link: Samouczek Oracle:data i godzina wyjaśnienie, jak używać 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. Wstaw zapytanie z wewnętrznym sprzężeniem

  2. Zmienne lokalne MySQL

  3. Liczenie i sumowanie MySQL na podstawie warunku

  4. mysql-connector-python 2.0.1-1 konflikt z python-mysql.connector

  5. Hibernacja mysql čć