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

SimpleDateFormatter.parse poskytuje výstup v jiném formátu, než je zadáno

Nepředávejte data jako řetězce do databáze MySQL. Je lepší, jednodušší a bezpečnější předávání datových objektů. Jednak vás to zbaví formátování a jakýchkoli problémů s formátováním. Nejlepší je předat instance třídy z java.time , moderní Java API pro datum a čas. Ve vašem případě LocalDateTime udělá.

    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 získané je:

Trochu jsem zjednodušil váš převod z epochového řetězce. Použijte primitivní long s malými písmeny spíše než Long objekt. Používám vaše časové pásmo, Asie/Kalkata, za předpokladu, že hodnoty vaší databáze jsou v tomto časovém pásmu. Normální doporučení jsou udržovat hodnoty databáze v UTC, alespoň pokud existuje nějaká možnost, že data budou někdy použita mimo vaše časové pásmo. Pokud to chcete, použijte tento převod namísto výše uvedeného:

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

Odkaz: Výukový program pro Oracle:Datum a čas vysvětlující, jak používat java.time .




  1. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:v mysql

  2. pole nebo seznam do Oracle pomocí cfprocparam

  3. Jak používat bootstrap css tabulky k zobrazení dat z MySQL tabulek?

  4. ORA-01722:Neplatné číslo, vyhledejte konkrétní řádek